在 x86 和 x86_64 中指定地址时,位移和标量乘数允许的大小是多少?
What are the sizes allowed for the displacement and scalar multiplier when specifying an address in x86 and x86_64?
在以下示例中,使用 AT&T 语法:
movq 8(%rdx, %rcx, 4), %rax
或使用 Intel 语法:
mov rax, [rdx + 8 + rcx * 4]
"displacement" 是 8,"scalar multiplier" 是 4。x86 中这些立即数的大小限制是什么?他们在 x86_64 中是什么?
感谢 Jester,他在评论中回答:
Displacement can be 32 bit and scale factor 1,2,4 or 8.
在以下示例中,使用 AT&T 语法:
movq 8(%rdx, %rcx, 4), %rax
或使用 Intel 语法:
mov rax, [rdx + 8 + rcx * 4]
"displacement" 是 8,"scalar multiplier" 是 4。x86 中这些立即数的大小限制是什么?他们在 x86_64 中是什么?
感谢 Jester,他在评论中回答:
Displacement can be 32 bit and scale factor 1,2,4 or 8.