我刚开始学习在Linux下的汇编。我已将以下代码保存为testasm.c,并通过gcc testasm.c -otestasm进行编译。
编译器回复:"impossible constraint in ‘asm’"。
#include <stdio.h>
int main(void)
{
int foo=10,bar=15;
__asm__ __volatile__ ("addl %%ebx,%%eax"
: "=eax"(foo)
: "eax"(foo), "ebx"(bar)
: "eax"
);
printf("foo = %d", foo);
return 0;
}
我该如何解决这个问题? (我从这里复制了示例。)
Debian Lenny,内核版本为2.6.26-2-amd64
gcc版本为4.3.2(Debian 4.3.2-1.1)
解决方案:
请参见被接受的答案-似乎不再支持“modified”子句。