例如 LEA RAX,[RBX+off] 中允许的偏移范围是多少

What is the allowed range for offsets in for example LEA RAX, [RBX+off]

现在我很确定这是一个基本问题,但我找不到答案。最多可以偏移多少位?

有六种寻址模式支持这种格式。汇编程序将自动选择位移适合的最短寻址模式。这些寻址模式的三个相关是:

  • 寄存器间接,无位移(位移必须为零)
  • 寄存器间接,8位位移(位移必须在-128到127之间)
  • 寄存器间接,32位位移(位移必须在−2147483648和2147483647之间)

不可能对比这些寻址模式支持的位移更大的位移进行编码。如果您需要更大的位移,请执行算术加载它。例如,做

mov rax, 123456789abcdef0h
lea rax, [rbx+rax]