AMD是否具有不同的CPU寄存器?“ rax”与“ eax”有何不同?

fra*_*one 1 x86 assembly 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?

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

Bee*_*ope 6

开始寄存器rraxrbx等,都是64位用导入寄存器AMD64扩展到现有的32位x86 ISA。ISA扩展随后被Intel采用,并且通常以更中性的名称x86-64闻名。基本上,过去十年中AMD和Intel发行的所有x86芯片都支持此ISA。

诸如eaxebx等的寄存器是32位寄存器,它们同时存在于原始的32位x86 ISA和64位x86-64中。如果您的书涉及那些寄存器,则很可能它没有涵盖64位扩展名(也许是在它之前写的)。

请注意,32位和64位寄存器不是分开的寄存器,因为它们重叠:64位rax,例如,具有eax作为其底部的32位,依此类推为rbxebxr8以及r8d等等。因此,对32位寄存器的修改会反映在相应的64位寄存器中,反之亦然。

16位(ax等)和8位(al等)寄存器之间存在类似的关系。您可以在许多地方找到所有血腥细节。