Я попробовал пример из GCC-Inline-Assembly-HOWTO
GCC встроенный ассемблер
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
.
Просто примечание: не используйте '__volatile__' здесь. Выход 'asm' 'записывается в' foo', используя 'foo' и' bar' таким образом, о котором компилятор не знает. Следовательно, свобода «оптимизировать» утверждение «asm» отсутствует. Кроме того, '% ebx' может быть недоступен для IA32 ELF. –