このコードをXcodeのAppleLLVM4.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"
);
最初のコードの何が問題になっていますか?