x86コンピューティングでは、アンリアルモード(ビッグリアルモード、フラットリアルモード、ブードゥーモードとも呼ばれる) [ 1 ]はリアルモードのバリアントであり、1つ以上のセグメント記述子に、メモリ全体へのアクセスを可能にする32ビット制限などの非標準値がロードされています。その名前とは裏腹に、x86プロセッサが動作できる独立したアドレッシングモードではありません。80286以降のx86プロセッサで使用されています。
効率上の理由から、80286およびそれ以降のすべての x86 プロセッサは、実効メモリ アドレスを計算する際には、実モードであっても、内部セグメント記述子キャッシュに格納されているベース アドレス、サイズ、およびその他の属性を使用します。したがって、内部セグメント記述子を変更することで、実モードでアドレス指定可能なメモリ サイズなどのセグメントのプロパティを変更できます。この技術は広く使用され、すべての Intel プロセッサでサポートされています。[ 2 ]
アンリアルモードのプログラムは、サンク処理なしでリアルモード用にプログラムされた16ビットコード(BIOS、DOSカーネル、ドライバなど)を呼び出すことができます。このため、アンリアルモードのドライバはDPMIドライバよりもシンプルです。ただし、アンリアルモードはWindows 3.x/9x/NTやOS/2などのプロテクトモードのオペレーティングシステムとは互換性がありません。
HIMEM.SYSは、拡張メモリに対処するためにこの機能(286と386の両方のバリアント)を使用します[ 5 ] 。ただし、DOSがアンリアルモードと互換性のない仮想8086モードで実行するように切り替えられている場合は除きます。
アンリアルモードを使用した数少ないゲームの一つ(あるいは唯一のゲーム)がウルティマVIIである。[ 6 ] [ 7 ]
BIOSコードでは、最新の Intel プロセッサの初期モードである Unreal モードが使用されています。 [ 8 ]さらに、Intel 386SL以降のプロセッサのシステム管理モード(SMM) では、プロセッサが巨大なリアル モードになります。[ 9 ]
80286マイクロプロセッサは、非公開命令LOADALLを使用して隠しセグメントベースレジスタを変更し、1MiBを超えるソースまたはターゲットメモリ位置を指すようにすることで、非現実モードに移行できます。[ 5 ]
80386 以上のマイクロプロセッサを非リアル モードにするには、まずプログラムがプロテクト モードに入り、 GDTまたはLDTでフラット ディスクリプタを見つけるか作成し、それぞれのプロテクト モードの「セレクタ」を使用してデータ セグメント レジスタの一部をロードしてから、リアル モードに戻る必要があります。リアル モードに戻ると、プロセッサはプロテクト モードと同様にキャッシュされたディスクリプタを引き続き使用するため、リアル モードから 4 GiB の拡張メモリにアクセスできるようになります。[ 4 ]
80386以降、リアルモードプログラムはアドレスサイズオーバーライドプレフィックスを使用して32ビットレジスタを使用できます。[ 10 ]これにより、プログラムはDS:[EBX]のようなアドレスを使用できます。通常のリアルモードでは、EBXが0xFFFFを超えるとフォルトが発生します。アンリアルモードでは、アクセスが許可されます。
前述のように、アンリアルモードでは通常、1 つ以上のデータセレクタを使用してメモリ内のデータをより効率的にアドレス指定します。これは一般的な手法であり、「フラットリアルモード」[ 11 ]または「ビッグリアルモード」 [ 12 ]と呼ばれることがよくあります。「アンリアルモード」という用語は、1991 年に Rakesh K. Agarwal によって導入されました。[ 13 ]
「巨大リアルモード」(ラルフ・ブラウンの割り込みリストで命名)または「unREAL」モード(トマシュ・グリスターが命名)は、4 GiB のコードセグメントで 32 ビットコードを実行する機能を追加します。これは、32 ビット属性(「D」ビット)が 1 に設定されている記述子からコードセレクタ (CS) をロードすることによって実現されます。このモードでは、16 ビットコードセグメントで 32 ビットアドレッシングを使用する場合に通常必要となるオペランドサイズオーバーライドプレフィックスを回避できますが、割り込みとの相互作用により設定がより困難になります。[ 14 ] [ 4 ]
32 ビット CS の使用については、Agarwal が 1991 年に「非現実モード」という用語を導入した記事で説明されています。[ 13 ]このモードは、Grysztar のオープンソースFASMと、Logitech マウス ドライバにバンドルされている商用 DOS Extender である Helix RM386 で使用されています。Grysztar は 2010 年に、このモードに入るためのテクニックと割り込みの処理方法について説明しました。また、テストしたほとんどの CPU がこの以前は知られていなかったモードをサポートしていると報告していますが、モデル不明の CPU (「Cyrix製だと思います」) と、後のユーザー レポートでBochsおよびDOSBoxエミュレータが例外であると報告しています。[ 15 ]
[…] Unreal Modeは非常に広く使われるようになったため […] Intelは後続のすべてのプロセッサでそれをサポートせざるを得なくなったが、その存在は文書化されることはなかった […]
{{cite newsgroup}}: CS1メンテナンス: アーカイブサービスは非推奨になりました (リンク){{cite web}}: CS1メンテナンス: アーカイブサービスは非推奨になりました (リンク)プロセッサは、アーキテクチャで定義されたシステム状態「Unreal」モードをロードします。
{{cite web}}: CS1メンテナンス: アーカイブサービスは非推奨になりました (リンク)