32 位寄存器名称以 E 开头,64 位寄存器名称以 R 开头。E 和 R 代表什么?选择这些字母有什么理由吗?
同样,在 64 位寄存器中,我们也可以在任何低级调试器(如 Windbg)中看到,最右边的位仍然使用与 64 位寄存器相同的名称,只是名称以E. 例如在 64 位系统中,RAX 寄存器最右边的 32 位被称为 EAX。
那么,E 和 R 代表什么吗?还有,为什么注册后缀X?
最佳答案
R
just stands for "register" . AMD64 ISA 扩展添加了 8 个额外的通用寄存器,名为 R8
通过 R15
.原始 8 个寄存器的 64 位扩展版本有一个 R
添加前缀 for symmetry . E
代表“ e 扩展”或“ e 增强”。 ( Wikipedia says "extended" .) 它们是 16 位寄存器的“扩展”版本,因为它们提供 16 位附加位,总共 32 位。 X
也用于“e x 趋向”——或者它可能意味着 16,如他 x 十进制。* X
-suffixed registers 是 8 位寄存器的 16 位扩展版本。对于 8 位寄存器,L
后缀表示“低”,而 H
后缀的意思是“高”。 因此,以一个特定的寄存器为例,您有 8 位
AL
和 AH
寄存器,是 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为 instructions that treated a pair of otherwise-separate 8-bit registers as a 16-bit integer , 类似于 AX
代表AH:AL
一对。因此,另一种可能的解释是 X
表示对,并且在后续处理器上命名高:低对时继续使用这种用法,包括 8086,它是 8080 的完整 16 位扩展。
关于assembly - E 和 R 前缀在英特尔 32 位和 64 位寄存器的名称中代表什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43933379/