exec()システムコールの引数がどのレジスタに格納されているかを知りたいのですが。
最初にexecシステムコールを実行する単純なCプログラムを実行し、そのオブジェクトダンプを取得したところ、実行するプロセスを含む引数にRDIが使用されており、カーネルでexecveを呼び出すためにsyscall命令が使用されていることがわかりました。私は64ビットのUbuntu12.04OSでこれを行いました
次に、QEMUで実行されているUbuntu 11.10 OS(32ビット)でこのプログラムを実行しました。しかし、現在、0x80のないオブジェクトダンプ割り込みが使用されており、引数はEBXにあります。
私は2つの面で混乱しています..なぜ1つの場所でint80が使用され、もう1つの場所でsyscallが使用され、execveシステムコールのレジスタがどのように選択されるのですか?