私のasmの知識は非常に限られているため、次のコードを知る必要があります:
movl %%esp %0
%0
レジスタ、メモリアドレス、またはその他を表しますか? とは%0
どういう意味ですか?
私のasmの知識は非常に限られているため、次のコードを知る必要があります:
movl %%esp %0
%0
レジスタ、メモリアドレス、またはその他を表しますか? とは%0
どういう意味ですか?
何らかの入出力オペランドを表します。これにより、アセンブリ コードで C 変数を使用できるようになります。このページにはいくつかの素晴らしい例があります。
%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
。