2012-05-05 80 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是a」,2%0 ?? –

+0

我猜只是一個小小的印刷錯誤。應該閱讀:「'%1'是'a'」。 – Eugene

+0

[這裏](http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html)是另外一個例子。 – Eugene