X86-64 架构与编程基础详解
1. RIP 相对寻址限制
RIP 相对寻址存在一定限制,目标操作数必须位于 RIP 寄存器的 ± 2GB 地址窗口内。不过,对于大多数程序而言,这一限制通常不会造成影响。在代码生成期间,汇编器一般会自动计算 RIP 相对位移值。这意味着,我们可以直接使用如 mov eax,[MyVal] 这样的指令,而无需操心位移值计算的具体细节。
2. X86 - 64 与 X86 - 32 的差异
- 立即值大小限制 :除
mov指令外,X86 - 64 模式下立即值的最大大小为 32 位。若指令操作的是 64 位宽的寄存器或内存操作数,指定的 32 位立即值在使用前会被符号扩展为 64 位。以下是一些使用 64 位寄存器和立即操作数的指令示例:
mov rax,100
0000000000000064h
48 C7 C0 64 00 00 00
Machine Code
Instruction
DesOp Result
48 05 C0 C8 00 00 00
add rax,200
000000000000012Ch
mov rcx,-2000
FFFFFFFFFFFFF830h
48 C7 C1 30 F8 FF FF
48 81 C1 E8 03 00 00
add rcx,1000
FFFFFFFFFFFFFC18h
mov rdx,0ffh
00000000000000FFh
48 C7 C2 FF 00 00 00
48 81 C
超级会员免费看
订阅专栏 解锁全文
1420

被折叠的 条评论
为什么被折叠?



