リアルモード

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

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

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

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

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

Category:x86アーキテクチャ
Category:プログラミング言語の実装