¿Qué significan los prefijos E y R en los nombres de los registros Intel de 32 bits y 64 bits?

Los nombres de registro de 32 bits comienzan con una E y los de 64 bits comienzan con una R. ¿Qué significan la E y la R? ¿Hay alguna razón para elegir estos alfabetos?

Además, en los registros de 64 bits, también, podemos ver en cualquier depurador de bajo nivel como Windbg que los bits más a la derecha todavía se denominan con el mismo nombre que el del registro de 64 bits, excepto que el nombre comienza con un E. Por ejemplo, los 32 bits más a la derecha del registro RAX en un sistema de 64 bits se conocen como EAX.

Entonces, ¿el E y el R representan algo? Y también, ¿por qué el sufijo X para registrarse?

  • R solo significa ” r egister” . La extensión AMD64 ISA agregó 8 registros adicionales de propósito general, denominados R8 a R15 . Las versiones extendidas de 64 bits de los 8 registros originales tenían un prefijo R añadido a ellas para la simetría .

  • E significa ” e xtended” o ” e nhanced”. ( Wikipedia dice ” e xtended” .) Son las versiones “extendidas” de los registros de 16 bits, ya que ofrecen 16 bits adicionales para 32 bits en total.

  • X también es para “e x tended”, o tal vez implica 16 como en el x adecimal. * Los registros X -suffixed son las versiones extendidas de 16 bits de los registros de 8 bits. Para los registros de 8 bits, el sufijo L significa “bajo”, y el sufijo H significa “alto”.

Por lo tanto, tomando un registro particular como ejemplo, tiene los registros AL y AH 8 bits, que son los bytes bajos y altos del registro AX 16 bits, que es la palabra baja del registro EAX 32 bits, que es la palabra doble baja del registro RAX 64 bits.

 | 63 - 32 | 31 - 16 | 15 - 8 | 7 - 0 | ====================================== . . | AH | AL | . . | AX | . | EAX | | RAX | ====================================== | 63 - 32 | 31 - 16 | 15 - 8 | 7 - 0 | 

__
* Se usó X en los mnemónicos (como LXI y DCX ) en el 8080 para obtener instrucciones que trataban un par de registros de 8 bits por separado como un entero de 16 bits , similar a como AX representa el par AH:AL . Por lo tanto, otra interpretación posible es que X significa par , y este uso se continuó al nombrar los pares alto: bajo en los procesadores posteriores, incluido el 8086, que era una extensión completa de 16 bits del 8080.