E 和 R 前缀在 Intel 32 位和 64 位寄存器的名称中代表什么?

What do the E and R prefixes stand for in the names of Intel 32-bit and 64-bit registers?

32位寄存器名称以E开头,64位寄存器名称以R开头。E和R代表什么?选择这些字母有什么原因吗?

此外,在 64 位寄存器中,我们也可以在任何低级调试器(例如 Windbg)中看到最右边的位仍然使用与 64 位寄存器相同的名称来引用,除了名称以 E 开头。例如64 位系统中 RAX 寄存器最右边的 32 位称为 EAX。

那么,E 和 R 代表什么吗?还有,为什么寄存器的后缀是X?

  • R just stands for "register". The AMD64 ISA extension added 8 additional general-purpose registers, named R8 through R15. The 64-bit extended versions of the original 8 registers had an R prefix added to them for symmetry.

  • E 代表“extended”或“enhanced”。 (Wikipedia says "extended"。)它们是 16 位寄存器的 "extended" 版本,因为它们为总共 32 位提供了 16 个附加位。

  • X 也适用于 "extended"——或者它可能意味着 16,如 hex 十进制。 * X 后缀的寄存器是 8 位寄存器的 16 位扩展版本。对于8位寄存器,L后缀表示"low",H后缀表示"high".

因此,以一个特定的寄存器为例,你有8位ALAH寄存器,它们是16位寄存器的低字节和高字节AX寄存器,即32位EAX寄存器的低位字,即64位RAX寄存器的低位双字。

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

__
* X was used in the mnemonics (such as LXI and DCX) on the 8080 for instructions that treated a pair of otherwise-separate 8-bit registers as a 16-bit integer,类似于 AX 表示 AH:AL 对的方式。因此,另一种可能的解释是 X 意味着 ,并且在后续处理器上命名 high:low 对时继续使用这种用法,包括 8086,这是一个8080 的完整 16 位扩展。