Assembly 在英特尔32位和64位寄存器的名称中,E和R前缀代表什么?

Assembly 在英特尔32位和64位寄存器的名称中,E和R前缀代表什么?,assembly,x86,64-bit,x86-64,cpu-registers,Assembly,X86,64 Bit,X86 64,Cpu Registers,32位寄存器名以E开头,64位寄存器名以R开头。E和R代表什么?选择这些字母有什么原因吗 此外,在64位寄存器中,我们也可以在任何低级调试器(如Windbg)中看到,最右边的位仍然使用与64位寄存器相同的名称引用,但名称以E开头。例如,在64位系统中,RAX寄存器最右边的32位称为EAX 那么,E和R代表什么吗?还有,为什么寄存器的后缀是X? 。AMD64 ISA扩展增加了8个额外的通用寄存器,通过R15命名为R8。原始8个寄存器的64位扩展版本添加了R前缀 E代表“Eextended”或“Ee

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

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

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

  • 。AMD64 ISA扩展增加了8个额外的通用寄存器,通过
    R15
    命名为
    R8
    。原始8个寄存器的64位扩展版本添加了
    R
    前缀

  • E
    代表“Eextended”或“Eenhanced”。(.)它们是16位寄存器的“扩展”版本,因为它们提供16个附加位,总共32位

  • X
    也表示“eX”——或者它可能意味着16,正如在他Xadecimal中一样。*
    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 |
__

*例如,类似于
AX
表示
AH:AL
对的方式。因此,另一种可能的解释是,
X
表示成对,这种用法在后续处理器上命名高:低对时继续使用,包括8086,它是8080的完整16位扩展。

至少部分地@SamiKuhmonen谢谢。@LưuVĩnhPhúc谢谢。
E
表示扩展@LưuVĩnhPhúc:如果合适的话,我会把一些老问题作为重复问题结束。这看起来是最规范的答案,尤其是因为它将“R”命名来源于AMD架构师发布的邮件列表。表示X可能代表“配对”。8080是8086的祖先,可以使用8位寄存器对作为16位整数或指针,就像CX是CH:CL寄存器对一样。谢谢,发现得好。虽然我同意这是一个有趣的历史小道消息,值得纳入到一个规范的答案中,但我不确定它是否能让我相信“X”实际上代表“pair”。它可能仍然代表“扩展”,因为这些指令被“扩展”为在16位对上操作@PeterYeah,在留下我的第一条评论后编辑你的答案时,我认为这可能意味着/来自pair,但实际上并不代表它。IDK如果I.J.Kennedy真的想说它代表pair,或者只是想说明8080的历史。同样相关:有一些关于设计8086以便于从8080 asm进行源代码移植的好东西如何影响寄存器集的设计。