2013-05-31 228 views
1

我試圖從GCC-Inline-Assembly-HOWTOGCC聯彙編

int main(void) 
{ 
    int foo = 10, bar=15; 
    _asm__volatile_("addl %%ebx,%%eax;\n" 
        :"=a"(foo) 
        :"a"(foo), "b"(bar)); 
    printf("foo+bar+%d\n",foo); 
    return 0; 
} 

一個例子,上面的代碼給我此error:​​。

我在哪裏出錯了?我正在致力於ubuntu 12.04

+1

請注意:不要在這裏使用__volatile__。 'asm''output'寫入'foo',使用'foo'和'bar'編譯器不知道的方式。因此,「優化」'asm'語句並不是免費的。另外,'%ebx'可能不適用於IA32 ELF。 –

回答

4
_asm__volatile_("addl %%ebx,%%eax;\n" 

...是不正確的語法。 asm易失性是單獨的關鍵字。

__asm__ __volatile__("addl %%ebx,%%eax;\n" 

...編譯(並執行正確的結果)。

+1

謝謝。我編譯並正確執行了它 – user146297