リアルモード

出典: フリー百科事典『ウィキペディア(Wikipedia)』
2013年8月9日 (金) 11:24時点における106.188.22.120 (トーク)による版 (少し日本語を修正)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先: 案内検索

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

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

286では、バグ(設計ミス)により、リアルモードのままでも21ビット目のアドレス線(A20ライン)を有効とし、0xffff×16 + 0xffff = 0x10ffef までの65520バイト(約64KiB)にアクセスできた。この領域はHMAとして使用され、386以降では正式な機能とされた。

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

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

MS-DOSはリアルモードでしか使えず、それに替わる標準的プラットフォームはWindows 95まで存在しなかったことから、Windows 95以前は多くのユーザーアプリケーションはリアルモードで動作していた。