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

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用于注册?

+0

一个完整的16位扩展部分至少http://*.com/questions/5125729/where-can-i-find-x86-register-names –

+0

@SamiKuhmonen谢谢。 –

+0

@LưuVĩnhPhúc谢谢。 –

R just stands for "register"。 AMD64 ISA扩展添加了8个附加通用寄存器,名称为R8R15。原始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位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 8080instructions that treated a pair of otherwise-separate 8-bit registers as a 16-bit integer,类似于如何AX表示AH:AL对。因此,另一种可能的解释是,X意味着,和命名高时,继续这种用法:在随后的处理器低对,其中包括8086,这是的8080

+1

https://*.com/a/2565092/224132表明X可能代表“对”。 8086是8086的祖先,可以使用8位寄存器对作为16位整数或指针,其方式与CX是CH:CL寄存器对相同。 –

+0

谢谢,很好找。虽然我同意这是一个有趣的历史珍闻,值得纳入一个规范的答案,但我不确定它说服我“X”实际上代表“对”。它可能仍然代表“扩展”,因为这些指令被“扩展”以在16位对上操作。 @Peter –

+0

是的,在我离开我的第一条评论后编辑你的答案时,我认为它可能意味着/来自一对,但并不代表它。 IDK if I.J.肯尼迪的意思是说*代表*对,或者只是为了说明8080的历史。 –