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位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 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 位扩展。
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, namedR8
throughR15
. The 64-bit extended versions of the original 8 registers had anR
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位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 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 位扩展。