リアルモード

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

リアルモードとは、x86CPUの動作モードで、Intel 8086互換動作を行うモードである。

正式名称はReal Address Mode(実アドレスモード)である。

全てのx86 CPUの起動時の動作モードであり、いわゆるBIOSはこのモードで動作している。このモードにおいては、すべてのレジスタのアドレス幅がデフォルトで16ビットであり、アドレッシングの際はセグメントレジスタの値を16倍して足す単純なアドレス変換により、20ビットのアドレス空間にアクセスすることが可能である。また、割り込みベクタは、最下位アドレス固定である。しかしこのモードがリアルモードと呼ばれるようになった、Intel 80286においては、設計ミスにより、0x10ffefまでと、65520バイト多くアクセス出来る様になっていて、完全な互換性のために常にアドレス線の20ビット目以上を0にする回路がPCアーキテクチャには用意されていた。但し、この回路はリアルモードのままでも無効にすることが可能で、この領域はHMAとして使用され、Intel 80386以降においては正式な機能となった。

なお、Intel 80386以降の32ビットレジスタを持つアーキテクチャでは、レジスタアクセス命令にプレフィックスを付けることによって、32ビットのレジスタアクセスは可能である。プロテクトモード移行の際などはリアルモードで特権レジスタを初期化して移行することになる。

また、Intel 80386では、プロテクトモードに移行した後、セグメントリミットを設定した後にリアルモードに復帰すると、命令にプレフィックスをつけることでそのセグメントリミットまでの実メモリ空間にアクセスすることが可能になるバグと思われるものもあり、この状態をUnreal mode と呼ぶことがある。この仕様は以降のすべてのCPUで有効となっている。これは、幾つかのゲームソフトで使われた。尚、BIOSにおいてのみ使用可能なシステムマネジメントモードは同様の全てのメモリ空間にアクセス可能な環境を提供する。

MS-DOSはリアルモードで動作しており、これに替わる地位を持ったオペレーティングシステム (OS) がMicrosoft Windows 95まで出現しなかったことから、i486出現までほとんどのユーザーアプリケーションはリアルモード前提で記述されていた。