x86コマンドがありますsysenter
。これはIntelの高速システムコール方式のようです。SYSENTER
Intelプロセッサでは、LONGモード(64ビット)で動作しているようです。 AMDが提供するsyscall
ように、このガイドラインはsyscall
EIP / ESPなどを使用して設定することはユーザーの責任です。
あなたは見ることができますsysenter
32ビットパラメータリスト。まったく心配しないでください。syscall
チップがロングモードにあるとき、int 0x80
Linuxではこのコマンドは何をしますか?sysenter
そのまま受けても役に立ちませんか?
答え1
システムコールへのアクセスを提供するCPUコマンドは単独では存在せず、オペレーティングシステムABIのコンテキスト内でのみ有用です。64ビットx86 Linux ABI次のエントリポイントがサポートされています(詳細情報貯水温網):
SYSCALL
64ビットコードから。- 32ビットおよび64ビットコードで0x80を割り込みます。
SYSENTER
32ビットコードから。
(カーネルに文書化されている追加の32ビットは混乱する可能性がありSYSCALL
ます。これは、64ビットコードで32ビットポインタを使用するx32システムコールインターフェイスです。)
ユーザー空間では、状況はより簡単です。
i386
コード(32ビットポインタを持つ32ビットコード)は__kernel_vsyscall
vDSOで使用する必要があります(使用する呼び出しメカニズムが決まります)。- 他のものを使用する必要があります
SYSCALL
。
SYSENTER
長いモードで64ビットコードをエクスポートしようとしたことはありませんが、これが役に立つタスクを実行するかどうかはわかりません。