其他分享
首页 > 其他分享> > 如何使asm跳转到c中的变量地址?

如何使asm跳转到c中的变量地址?

作者:互联网

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

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

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

asm("jmp *(addr)");

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

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

解决方法:

“Assembler Instructions with C Expression Operands”

asm volatile("jmp *%0" : : "r" (addr));

标签:assembly,inline-assembly,c-3,linux,x86
来源: https://codeday.me/bug/20191030/1966290.html