2012-05-05 10 views

答えて

5

一部は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あり、%1aです。

+0

何か問題がありますか? "%0はこの場合bで、%0は"、2%0 ?? –

+0

ほんの小さなミスプリントだと思います。 "'%1'は 'a'です。 – Eugene

+0

[Here](http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html)はもう1つの「How To」の例です。 – Eugene

関連する問題