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 に答える