リアルモード

曖昧さ回避 この項目では、CPUモードプロテクトモード仮想86モードに対応する言い方)について説明しています。Windowsの動作モード(スタンダードモードやエンハンスドモードに対応する言い方)については「リアルモード (Windows 3.0)」をご覧ください。

リアルモード(real mode, real address modeとも)とは、(80286以降の)x86プロセッサの動作モードで、8086互換の動作をするモードである。

全てのx86プロセッサの起動時の動作モードであり、BIOSはこのモードで動作している。このモードにおいては、すべてのレジスタのアドレス幅がデフォルトで16ビットであり、アドレッシングの際はセグメントレジスタの値を16倍して足す単純なアドレス変換により、20ビットのアドレス空間にアクセスすることが可能である。また、割り込みベクタは、最下位アドレス固定である。

80286のリアルモードでは、過去との互換性のためにメモリ空間は1MiBであったが、21ビット目のアドレス線(A20ライン)を有効にすることで65520バイト余計に利用することができた。この領域はHMAとして使用され、80386以降でも同様に使用できる。

詳細は「Intel 80286#HMAの活用」および「XMS#HMA」を参照

386以降の(IA-32)プロセッサでは、レジスタアクセス命令にプレフィックスを付けることによって、リアルモードでも32ビットのレジスタアクセスは可能である。プロテクトモード移行の際などはリアルモードで特権レジスタを初期化して移行することになる。

386には、一旦プロテクトモードに移行してセグメントリミットを設定してから、リアルモードに復帰すると、そのセグメントリミットまでの実メモリ空間にリアルモードからアクセスが可能になるというバグのような動作がある。これはUnreal mode(英語版)などと呼ばれる。以降のすべてのプロセッサで有効となっており、幾つかのゲームソフトやDOSエクステンダで使われた。尚、BIOSにおいてのみ使用可能なシステムマネジメントモードは同様の全てのメモリ空間にアクセス可能な環境を提供する。