4

现在,我用 c 中的内联汇编调用跳转指令,如下所示:

int register eax asm("eax") = addr; // addr is a memory address
asm("jmp *%eax");

我想这样做而不必设置任何其他寄存器值(例如,我想做的是这样的):

asm("jmp *(addr)");

这样做的正确方法是什么?也就是说,如何将 ac 变量“插入”到 asm 调用中?

Ubuntu 12.04 64 位,Intel x86 64 位处理器,gcc 版本 4.7.4。

4

1 回答 1

6

“带有 C 表达式操作数的汇编器指令”

asm volatile("jmp *%0" : : "r" (addr));
于 2013-11-07T04:23:56.043 回答