内存寻址通用公式

  • 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),因为它不涉及标志位且硬件流水线优化极好。