Linux
コマンド
スタートアップルーチンは、mainを呼んだあとにもいくらかの後処理をする。 スタートアップルーチンを正しくリンクした場合、プログラムカウンタが main に来たときは、 スタックにmainの後処理をするアドレスが積まれている。 なので、gccコンパイラドライバを使ってリンクした場合には、main から単に ret するだけで、プログラムが正しく終了できる。
mainのあとに必要な処理はいくつかあるが、一番重要なのは、OSに対してプログラムの終了を依頼することだ。 詳細はシステムコールのところで説明するが、x86_64 では、rax レジスタに 60 を設定して、syscall 命令を実行すればよい。
I/O