GCC内联汇编

时间:2013-05-31 13:40:37

标签: c linux gcc assembly inline-assembly

我尝试了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

1 个答案:

答案 0 :(得分:4)

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

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

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

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