我真的很想使用这种地址构造,它根据遥远的记忆以及我所看到的任何地方都受到支持,但由于某种原因它扰乱了我的编译器/汇编器。
mov rax, [rsi+rcx*8]
编译器在 * 上抛出一个错误,说
error: unknown token in expression mov rax, [rsi+rcx*8]
^
这些说明是完全可以接受的:
mov rax, [rsi+rcx];
mov rax, [rsi+rcx+8]
因此,要么编译器不支持缩放(好像?),要么在 64 位模式下不支持缩放?
这是在 Xcode 4.6 中,使用我推测的 LLVM,虽然这是我自软盘驱动器时代以来的第一个汇编程序项目,所以我不确定是谁在进行解析。我确实指定了 .intel_syntax。asm 位于 .s 文件中,而不是内联文件中。
那么 x86_64 模式是问题所在吗?从英特尔文档中,“64 位寻址使用现有的 32 位 ModR/M 和 SIB 编码”,但它只是忽略 SIB 字节中的比例位吗?
非常感谢