sysenter

読み:シス・エンター
外語:sysenter 英語
品詞:固有名詞

x86系プロセッサーの命令の一つで、システムコール用に用意された命令。

目次

Pentium Ⅱ以降で利用できる。オペコードは「0fh 34h」の2バイトである。

元の処理に戻る場合の命令はsysexitで、こちらのオペコードは「0fh 035h」の2バイトである。

由来

従来、システムコールの実装にはソフトウェア割り込み機能が使われていた(Windows NT系ならint 2eh、Linuxならint 80h)が、ソフトウェア割り込みは処理が煩雑であるため遅かった。

そこで、高速なシステムコールを実現するために、この命令が追加された。

挙動

sysenter命令は、次のような動作をする。

  • CSレジスターに、SYSENTER_CS_MSR(MSR 174H)の値をロード
  • EIPレジスターに、SYSENTER_EIP_MSR(MSR 176H)の値をロード
  • SSレジスターに、SYSENTER_CS_MSRの値に8を加算した値をロード
  • ESPレジスターに、SYSENTER_ESP_MSR(MSR 175H)の値をロード
  • 特権レベル0(RING 0)に切り替え、カーネルモードルーチンの実行を開始

呼び出し元をスタックに積むこともなく、MSRの内容をレジスターにロードしてカーネルモードに入るだけの動作をしている。

メモリーアクセスが無いため非常に高速ということになるが、呼び出し元をスタック上に記録していないため、デバッガーを使う場合、この命令に対応していなければ呼び出し元が分からない。

用語の所属
x86
関連する用語
システムコール
syscall

コメントなどを投稿するフォームは、日本語対応時のみ表示されます


KisoDic通信用語の基礎知識検索システム WDIC Explorer Version 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club