E和R前缀在Intel 32位和64位寄存器的名称中代表什么?
32位寄存器名称以E开头,64位以R开头。E和R代表什么意思?有没有选择这些字母的理由?另外,在64位寄存器中,我们也可以在任何低级别调试器(例如Windbg)中看到最右边的位仍被称为与64位寄存器相同的名称,除了名称以E开头。例如64位系统中RAX寄存器的最右侧32位称为EAX。E和R前缀在Intel 32位和64位寄存器的名称中代表什么?
那么,E和R代表什么?还有,为什么后缀X用于注册?
R
just stands for "register"。 AMD64 ISA扩展添加了8个附加通用寄存器,名称为R8
到R15
。原始8个寄存器的64位扩展版本有R
前缀添加到他们for symmetry。
E
代表 “è xtended” 或 “è nhanced”。 (Wikipedia says "extended")。它们是16位寄存器的“扩展”版本,因为它们提供总共32位的16个附加位。
X
也是 “电子X倾向于” - 或者也许这意味着16在他X adecimal。 *X
-附加寄存器是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
https://*.com/a/2565092/224132表明X可能代表“对”。 8086是8086的祖先,可以使用8位寄存器对作为16位整数或指针,其方式与CX是CH:CL寄存器对相同。 –
谢谢,很好找。虽然我同意这是一个有趣的历史珍闻,值得纳入一个规范的答案,但我不确定它说服我“X”实际上代表“对”。它可能仍然代表“扩展”,因为这些指令被“扩展”以在16位对上操作。 @Peter –
是的,在我离开我的第一条评论后编辑你的答案时,我认为它可能意味着/来自一对,但并不代表它。 IDK if I.J.肯尼迪的意思是说*代表*对,或者只是为了说明8080的历史。 –
一个完整的16位扩展部分至少http://*.com/questions/5125729/where-can-i-find-x86-register-names –
@SamiKuhmonen谢谢。 –
@LưuVĩnhPhúc谢谢。 –