C インライン アセンブリのベース ポインター レジスタによる関数呼び出しのオーバーヘッドを回避する
C インライン アセンブリ内でベース ポインター レジスタ (%rbp) を利用するには、この修正されたコードに従ってくださいスニペット:
void Foo(int &x) { int tmp; long tmplong; asm volatile( "lea -16 + %[mem1], %%rbp\n\t" "imul , %%rbp, %q[reg1]\n\t" // Register allocated to tmplong "add %k[reg1], %k[reg1]\n\t" // Register allocated to tmp "movl , %[mem1]\n\t" // Store value in memory pointed to by tmp : [mem1] "=&m"(tmp), [reg1] "=r"(tmplong) : : "%rbp" ); x = 5; }
説明:
追加メモ:
以上がベース ポインター レジスタを使用した C インライン アセンブリで関数呼び出しのオーバーヘッドを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。