従来、システムコールの実装にはソフトウェア割り込み機能が使われていた(Windows NT系ならint 2eh、Linuxならint 80h)が、ソフトウェア割り込みは処理が煩雑であるため遅かった。 そこで、高速なシステムコールを実現するために、この命令が追加された。 未対応のCPUで利用すると無効命令例外が発生するので、CPUがこの命令に対応しているかどうかは、CPUID命令で判定する。 EAX=80000000HでCPUID命令を実行し、返却値EAXの最上位ビットが1となる拡張CPUID対応環境で、かつEAX=80000001HでCPUIDを実行した結果得られたEDXレジスターのビット11が1のとき、命令に対応している。 syscall命令は、次のような動作をする。 レガシーモードの場合 syscall命令の次のアドレス(EIP)をECXレジスターにロード CSレジスターに、STAR