我尝试了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;
}
上面的代码为我提供了error
:add_two.c:8:3: error: expected ‘)’ before ‘:’ token
。
ubuntu 12.04
。
答案 0 :(得分:4)
_asm__volatile_( "addl %%ebx,%%eax;\n"
...语法不正确。 asm 和 volatile 是单独的关键字。
__asm__ __volatile__( "addl %%ebx,%%eax;\n"
...编译(并以正确的结果执行)。