インライン アセンブラ (gcc 4.2.1、Mac OS 10.7.5)でシステム コールを呼び出そうとしていますwrite
が、コードは正常にコンパイルされますが、出力がまったくありません。これは完全なコードです:
int main()
{
char s[] = "Test\n";
// write(1, s, 5);
asm(
"movq $1, %%rax;"
"movq $1, %%rdi;"
"movq %0, %%rsi;"
"movq $5, %%rdx;"
"syscall;"
:
: "r"(s)
: "%rax", "%rdi", "%rsi", "%rdx"
);
}
gcc でコンパイルします。
$ gcc main.c -o test
走る:
$ ./test
Xcode 4.5 デバッガーでコードを実行すると、次のエラーが発生します。
Thread 1: EXC_SYSCALL (code=1, subcode=0x1)
コードの何が問題になっていますか? Ubuntu 12.04 LTS で問題なく動作します。
ありがとう!