首页 文章

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

提问于
浏览
2

这个问题在这里已有答案:

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

在书中,寄存器与我在电脑上看到的寄存器不同 . 这些是我的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 回答

  • 4

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

    eaxebx 等寄存器是32位寄存器,它们既存在于原始的32位x86 ISA中,也存在于64位x86-64中 . 如果您的书只涉及那些寄存器,那么很可能它不包括64位扩展(也许它是在它之前编写的) .

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

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

相关问题