内存寻址通用公式
- Imm: 立即数偏移 (Displacement)
- : 基址寄存器 (Base)
- : 变址寄存器 (Index)
- s: 比例因子 (Scale),只能是 1, 2, 4, 8。
核心指令辨析:MOV vs LEA
MOV (Move)
- 行为:
mov (%rax), %rbx - 含义: 读取内存。去
%rax指向的地址,把里面的值取出来,放入%rbx。 - 类比: 快递员根据地址去取包裹。
LEA (Load Effective Address)
- 行为:
lea (%rax), %rbx - 含义: 计算地址。把
%rax里面的地址值直接算出来,放入%rbx。不访问内存。 - 类比: 只是在纸上抄写并计算地址,不去取包裹。
- 黑客技巧: 编译器常利用
lea进行快速算术运算(如x + k*y),因为它不涉及标志位且硬件流水线优化极好。