Unreal mode

Unreal mode

Unreal mode, also big real mode, huge real mode, or flat real mode, is a variant of real mode (PE=0), in which one or more data segment registers have been loaded with 32-bit addresses and limits. Contrary to its name, it is not a separate addressing mode that the x86 and x86-64 processors can operate in. It is used in the 80386 and later x86 processors.

Overview

For efficiency reasons, the 80386 and later x86 processors use the base address stored in their internal "descriptor" cache whenever accessing memory, regardless if they are operating in real or protected mode. The "selector", i.e. the 16-bit "segment number" visible to the programmer is used once, while reloading a segment register, to update the various fields of the respective "descriptor", and then is simply disregarded.

Some DOS extenders use this feature to address the high memory. It was used by many computer games in the 1990 to 1995 time frame, since it allowed programmers to use more memory than in real mode, which is restricted to 1 MB (640 KB usable), but still access the DOS operating system, which doesn't work in protected mode. After the introduction of Windows 95 unreal mode quickly fell out of favour as programs using it cannot be run in the DOS prompt of Microsoft Windows; they require a "Restart in MS-DOS mode" in Windows 95 and 98, and cannot be run at all on NT and later Windows systems. For those operating systems, an emulator such as DOSBox is the only way to run programs designed for unreal mode. Unreal mode is still extensively used by BIOS code.

Enabling Unreal Mode

To enable unreal mode without using any undocumented features of the CPU, the program has to enter protected mode, locate a flat descriptor in the GDT or LDT or create such, load some of the segment registers with the respective protected mode "selector", then cancel back to real mode. When jumping back to RM, the processor will continue using the cached descriptors as established in PM - thus allowing access to 4 GB of "extended" memory from inside real mode.

A much simpler way to load such information into a selector is with the undocumented LOADALL instruction, which can be used to load arbitrary data into the descriptor cache for each selector.

ee also

*x86 assembly language


Wikimedia Foundation. 2010.

Игры ⚽ Нужна курсовая?

Look at other dictionaries:

  • Unreal mode — (иногда также Big Real Mode, 32 bit Real Mode, Flat Real Mod)  недокументированный режим работы процессора 80386. Вариант реального режима, в котором имеется возможность адресовать до 4 гигабайт памяти. Активно использовался в некоторых… …   Википедия

  • Unreal mode — Der Begriff Real Mode, eigentlich real address mode oder eingedeutscht Real Modus, bezeichnet eine Betriebsart der x86 kompatiblen Prozessoren, die ab dem Intel 80286 unter diesem Namen existiert. Inhaltsverzeichnis 1 Charakteristika 2… …   Deutsch Wikipedia

  • Unreal tournament 2004 — Éditeur Atari Développeur Epic Games Digital Extremes …   Wikipédia en Français

  • Unreal Tournament 2004 — Éditeur Atari Développeur Epic Games Digital Extremes MacSoft Games …   Wikipédia en Français

  • Unreal tournament 2003 — Éditeur Infogrames Développeur Epic Games Date de sortie 2002 Genre Tir subjectif Mode de jeu Solo et Multijoueur …   Wikipédia en Français

  • Unreal Tournament 2003 — Éditeur Infogrames Développeur Epic Games Date de sortie 2002 Genre Tir subjectif Mode de jeu Solo et Multijoueur …   Wikipédia en Français

  • Unreal Tournament 2007 — Unreal Tournament 3 Unreal Tournament 3 Éditeur Midway Games Développeur Epic Games Concepteur …   Wikipédia en Français

  • Unreal Tournament III — Unreal Tournament 3 Unreal Tournament 3 Éditeur Midway Games Développeur Epic Games Concepteur …   Wikipédia en Français

  • Unreal tournament 2007 — Unreal Tournament 3 Unreal Tournament 3 Éditeur Midway Games Développeur Epic Games Concepteur …   Wikipédia en Français

  • Unreal tournament 3 — Éditeur Midway Games Développeur Epic Games Concepteur …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”