Sef*_*efu 4 c linux x86 assembly inline-assembly
现在,我在 c 中调用带有内联汇编的跳转指令,如下所示:
int register eax asm("eax") = addr; // addr is a memory address
asm("jmp *%eax");
Run Code Online (Sandbox Code Playgroud)
我想这样做而不必设置任何其他寄存器值(例如我想做的是这样的):
asm("jmp *(addr)");
Run Code Online (Sandbox Code Playgroud)
这样做的正确方法是什么?也就是说,如何将 ac 变量“插入”到 asm 调用中?
Ubuntu 12.04 64 位,Intel x86 64 位处理器,gcc 版本 4.7.4。
asm volatile("jmp *%0" : : "r" (addr));
Run Code Online (Sandbox Code Playgroud)