私はプログラムを正常に終了するのではなく、なぜガーベジを印刷しますか?私はBSDでこのようにシステムコールを使用しています。そして、Linuxでこれを動作させるためには何が必要なのでしょうか?x86_64 LinuxのインラインasmのSyscall?
int
main(int argc, char **argv)
{
__asm ("movq $1,%rax; movq $0,%rdi; syscall"); /* exit(0) ? */
return 0;
}
ありがとうございます。
ありがとうございます!これだよ。なぜ彼らはそれを変更しなければならなかったのかわかりません。したがって、BSDは従来の数値を使用していますが、Linux 64はそれらを変更しました。これは私がコードを再利用することができないことを意味します:( – jbcreix
@jbcreix、好奇心から*なぜあなたはポータブルコールを 'exit()'と 'write()'の代わりに使用しますか? ? – RBerteig
ポータブルコールはglibcや他のCライブラリにリンクする必要があります。私は、必要な機能とOSから独立した機能しか実装できません。もちろん、静的リンクでも同様の結果が得られますが、 – jbcreix