我试图将标签的地址移动到一个64位寄存器中,但它不允许我这样做。
我遇到了一个:
这里有一个我正在尝试做的示例:
为什么它不让我这样做?它只允许将标签移动到32位寄存器中吗? 我必须将该标签的地址插入到64位寄存器中,那么我该如何实现呢?
谢谢。
我遇到了一个:
fatal error: error in backend: 32-bit absolute addressing is not supported in 64-bit mode
这里有一个我正在尝试做的示例:
我想要做的事情的例子:
asm ("mov $label, %rax"); // Tried movq, movl (No difference)
...
asm volatile("label:");
...
为什么它不让我这样做?它只允许将标签移动到32位寄存器中吗? 我必须将该标签的地址插入到64位寄存器中,那么我该如何实现呢?
谢谢。
eax
吗?我认为它的意思就是字面上的意思。你现在使用的是Mac OS X,对吧?我想在Mac上所有64位代码都必须是rip
相对的。绝对地址不被支持,所以你不能在寄存器中加载一个绝对地址。 - Gene