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?
在这种情况下,有人可以向我解释两种架构的寄存器之间的对应关系吗?
开始寄存器r中rax,rbx等,都是64位用导入寄存器AMD64扩展到现有的32位x86 ISA。ISA扩展随后被Intel采用,并且通常以更中性的名称x86-64闻名。基本上,过去十年中AMD和Intel发行的所有x86芯片都支持此ISA。
诸如eax,ebx等的寄存器是32位寄存器,它们同时存在于原始的32位x86 ISA和64位x86-64中。如果您的书仅涉及那些寄存器,则很可能它没有涵盖64位扩展名(也许是在它之前写的)。
请注意,32位和64位寄存器不是分开的寄存器,因为它们重叠:64位rax,例如,具有eax作为其底部的32位,依此类推为rbx和ebx,r8以及r8d等等。因此,对32位寄存器的修改会反映在相应的64位寄存器中,反之亦然。
16位(ax等)和8位(al等)寄存器之间存在类似的关系。您可以在许多地方找到所有血腥细节。
| 归档时间: |
|
| 查看次数: |
946 次 |
| 最近记录: |