在 Xcode 中使用 Apple LLVM 4.1 编译此代码时出现错误:
#include <stdio.h>
int main(int argc, const char * argv[])
{
int a = 1;
printf("a = %d\n", a);
asm volatile(".intel_syntax noprefix;"
"mov [%0], 2;"
:
: "r" (&a)
);
printf("a = %d\n", a);
return 0;
}
错误是Unknown token in expression
。
如果我使用 AT&T 语法,它可以正常工作:
asm volatile("movl $0x2, (%0);"
:
: "r" (&a)
: "memory"
);
第一个代码有什么问题?