3
私のasm知識は、私は以下のコードを知っている必要があり、そのように限定されるものである:%0を含むasmコード、それはどういう意味ですか?
movl %%esp %0
%0
は、レジスタ、メモリアドレス、または何か他のものを表していますか? %0
の意味は?
私のasm知識は、私は以下のコードを知っている必要があり、そのように限定されるものである:%0を含むasmコード、それはどういう意味ですか?
movl %%esp %0
%0
は、レジスタ、メモリアドレス、または何か他のものを表していますか? %0
の意味は?
一部はinput/output operandを表します。これにより、アセンブリコードでC変数を使用することができます。 This pageには素晴らしい例がいくつかあります。
%0
は、コードで定義されている最初の入出力オペランドに過ぎません。実際には、これは、スタック変数、ヒープ変数、またはコンパイラによって生成されたアセンブリコードの仕方に応じたレジスタです。例えば
:
int a=10, b;
asm ("movl %1, %%eax;
movl %%eax, %0;"
:"=r"(b) /* output */
:"r"(a) /* input */
:"%eax" /* clobbered register */
);
%0
この場合にb
あり、%1
がa
です。
何か問題がありますか? "%0はこの場合bで、%0は"、2%0 ?? –
ほんの小さなミスプリントだと思います。 "'%1'は 'a'です。 – Eugene
[Here](http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html)はもう1つの「How To」の例です。 – Eugene