AMD有不同的CPU寄存器吗? “rax”与“eax”有什么不同?

时间:2017-07-07 13:40:30

标签: assembly x86 cpu-registers

我在读“黑客:剥削的艺术”。

在书中,寄存器与我在电脑上看到的寄存器不同。这些是我的cpu寄存器:

RAX, RBX, RCX, RDX, RSI, RDI, RBP, RSP, R8, R9, R10, R11, R12, R13, R14, R15, RIP, EFLAGS, CS, SS, DS, ES, FS, gs

在书中,寄存器是:

EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI, EIP, EFLAGS, CS, SS, DS, ES, FS, GS

有人可以解释为什么他们不同吗?这是可能的,因为我正在使用amd cpu?

在这种情况下,有人可以解释一下这两种架构的寄存器之间的对应关系吗?

1 个答案:

答案 0 :(得分:5)

r中以rax开头的寄存器,rbx等,是AMD64 extension引入的 64位寄存器现有的32位x86 ISA。 ISA扩展随后被英特尔采用,通常以更中性的名称x86-64为人所知。基本上所有在过去十年中从AMD和英特尔发布的x86芯片都支持这种ISA。

eaxebx等寄存器是32位寄存器,它们既存在于原始的32位x86 ISA中,也存在于64位x86-64中。如果您的书只将 引用到那些寄存器,那么很可能它不会覆盖64位扩展(可能它是在它之前写的)。

请注意,32位和64位寄存器不是单独的寄存器,因为它们重叠:例如,64位rax的底部32位为eax,并且依此类推rbxebxr8r8d等等。因此,对32位寄存器的修改会反映在相应的64位寄存器中,反之亦然。

16位(ax等)和8位(al等)寄存器之间存在类似的关系。您可以在many places中找到所有血腥的详细信息。