1

我尝试了一个例子GCC-Inline-Assembly-HOWTO

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;
 }

上面的代码给了我这个erroradd_two.c:8:3: error: expected ‘)’ before ‘:’ token

我哪里出错了?我正在努力ubuntu 12.04

4

1 回答 1

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

...不是正确的语法。asmvolatile是单独的关键字。

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

...编译(并以正确的结果执行)。

于 2013-05-31T13:44:37.320 回答