2010-03-30 31 views
20

Google no muestra el resultado,¿Qué significa X en EAX, EBX, ECX ... en el ensamblaje?

Cualquiera sabe?

+0

Relacionados: [¿Qué significan los prefijos E y R en los nombres de los registros Intel de 32 bits y 64 bits?] (Https://stackoverflow.com/questions/43933379/what-do-the-e -and-r-prefixes-stand-for-en-los-nombres-de-intel-32-bit-y-64-bit-r). También pregunta acerca de la parte "X", pero esta pregunta tiene mejores respuestas para que no se cierre como un duplicado. –

Respuesta

9

Nada, que yo sepa. Representa un registro de propósito general.

El registro AX de 16 bits se puede direccionar como AH (byte alto) y AL (byte bajo).

El registro EAX es la versión de 32 bits del registro AX. La E significa extendido.

+14

Los 8080, 8085 y Z80 tenían registros de 8 bits A, B, etc. El 8086 tenía los registros de 16 bits AX, EX, etc. El 80386 y superior tiene el EAX.Supuse que la E y la X representaban 'extendida', la X para la extensión de 16 bits y la E para la extensión de 32 bits. –

+1

@Jonathan: La X podría haberse inspirado en "extendido", pero aún no he encontrado esa descripción en ningún lado. Si no hay un significado oficial para la X, eso explicaría cómo podrían agregar otro "extendido" sin sentirse tontos. Nombrarlo como el registro "Extended Acumulator eXtended" parecería una falta de imaginación ... :) – Guffa

+0

tipo de 'C' tiene su nombre - C for Code. – IAbstract

1

Como Mihai dice, es solo una convención de nomenclatura.

Sin embargo, dado que 'X' se usa a menudo para "completar su valor" y es comúnmente utilizado por matemáticos como el primer nombre de variable de elección en ecuaciones, y esos registros particulares son de propósito general (en lugar de decir ESP, que es el puntero de pila extendido (32 bits) o EIP, el puntero de instrucción extendida) que es quizás la razón por la que se elige X en lugar de decir 'B'.

+0

igualmente, las variables tienden a ser nombres, A B C ... pero podría ser la razón. – thecoshman

+0

Bueno, cierto, algunas personas van por a, b, c, otras por x, y, z ... Solo estoy adivinando para ser honesto. –

0

Una posible razón por la que se me ocurre es denotar que no tiene un estado "normal". Cuando se habla de la comunicación en serie en la electrónica, si una de las líneas de datos puede ser cualquier cosa, se podría decir que su estado es X, ya que no es ni/ambos/0 o 1.

+0

Se podría sugerir que "X" era una abreviatura de "H o L", ya que AX podría interpretarse como "todos los registros cuya primera letra es H y cuya segunda letra es H o L", pero eso no tiene nada que ver. hacer con el estado "normal". – supercat

32

La X significa par, y se remonta al menos al 8080. Tenía registros de 8 bits B, C, D, E, H, L (entre otros) que también podían usarse en pares (BC, DE y HL). Los pares BC y DE se usaron principalmente para la aritmética de 16 bits; el par HL generalmente tenía una dirección de memoria. Algunos ejemplos del uso de X para par:

LXI D,12ABH ; "load pair immediate" 
DCX B   ; "decrement pair" 
STAX D   ; "store A (indirect) at pair" 

avance rápido hasta el 8086. Se tiene registros AL, AH, BL, BH, Cl, CH, DL, DH, que, de manera similar a el 8080, se puede usar de a pares: AX, BX, CX, DX.

Como han señalado otros, la E en los nombres de registro de 32 bits significa extendida.

+2

¡Impresionante! Gracias por esto. Solo estaba adivinando que 'E' significaba extendido antes de tu publicación. – crush

+0

Confirmado: el primer procesador Intel compatible con estas instrucciones fue el 8080. No retrocede más allá de eso. El 8008 no admitía registros emparejados. Los únicos mnemónicos de instrucciones que contenían 'X' en el 8008 eran operaciones XOR. –

5

En el 8086, el registro AX fue la combinación de AH y AL. Del mismo modo, BX era BH y BL, etc. En el 80386, en lugar de combinar registros de 16 bits en registros de 32 bits, Intel agregó 16 bits a cada registro. El nombre "AL" todavía se refiere a los bits 0-7 del primer registro con nombre de letra, "AH" a los bits 8-15, y "AX" a los bits 0-15; el nombre "EAX" ahora se refiere a los 32 bits del registro.

Es interesante observar que la mayoría de los otros procesadores de 16 y 32 bits no ofrecen ningún medio equivalente de acceder solo a las partes superiores o inferiores de un registro. Los costos de permitir tal acceso, tanto en complejidad de hardware como en bits de codificación de instrucciones, fueron significativos, y en la actualidad, la capacidad de agregar una porción de 8 bits de un registro a una porción de 8 bits de otro registro está lejos menos útil que muchos otros usos para los cuales tal hardware o espacio de codificación de instrucciones podría ser puesto. Por otro lado, todavía hay momentos en que tales habilidades pueden ser útiles cuando existen.

Cuestiones relacionadas