Unreal mode

Unreal mode

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

Активно использовался в некоторых приложениях MS-DOS в начале 1990-х годов, в том числе некоторых играх.

Из-за большой популярности режима, компании Intel пришлось поддерживать его в последующих процессорах, хотя он и оставался недокументированным[1].

Содержание

Описание

Ядро MS-DOS исполняется в 16-битном режиме процессора, реальном или же V86.

Чтобы снять ограничение по размеру адресного пространства в 1М, необходим защищённый режим, и, скорее всего, 32-битный защищённый режим (в 16-битном доступно только 16М).

Таким образом, для разработки программ под DOS, использующих всю память, приходилось либо программировать в защищённом режиме и использовать расширитель DOS и DPMI (так написан, например, Doom), либо же использовать недокументированную возможность процессора.

Эта возможность состоит в том, что можно кратковременно войти в 32-битный защищенный режим, загрузить там дескрипторы сегментов с границами, превышающими 64К, и потом выйти обратно в 16-битный реальный режим. При выходе сохраняется значение границы, превышающее 64К, граница не сбрасывается при выходе сама.

После этого можно, применяя явно написанные на ассемблере 32-битные команды, обращаться ко всей памяти машины напрямую, относительно сегмента с «неправильной» границей.

Разработка в защищённом режиме требовала использования всего пакета инструментов и отладчика, рассчитанного на это, и обычно связанного с конкретным расширителем DOS. Такие пакеты были дороги, не так популярны, как обычные среды разработчиков под DOS, и потому часто от их использования отказывались.

Unreal mode позволял использовать всю память из приложения, разработанного в обычной среде разработки под DOS, например, Borland C++.

Ограничения

Метод не может использоваться на 80286. Нельзя использовать этот метод для адресации кода или стека[2].

Невозможность работы ни в каких многозадачных средах на основе DOS и в «Virtual 8086»-окне операционной системы Windows, в том числе в NTVDM Windows NT. Более того, unreal mode не совместим с EMM386 — последний работает, создавая единственную виртуальную машину режима V86 и помещая в неё весь DOS. Полноценные виртуальные машины, такие, как Virtual PC и VMWare Workstation, обычно работают без проблем. Впрочем, Hyper-V не поддерживает unreal mode.

Правильное описание

В действительности, так называемый "Unreal Mode" не является недокументированным и, более того, не является режимом работы процессора. Данный режим означает особые настройки одного или нескольких сегментных регистров процессора.

Возможность подобной адресации напрямую следует из технических спецификаций 80386. А конкретно, именно начиная с этого процессора появились две необходимые для этого возможности. Первая - документированный переход из защищенного режима в реальный путем сброса флага PE в регистре CR0 (его предшественник, 80286, игнорировал попытки сбросить данный флаг в своей 16-битной версии CR0, называвшейся MSW). Вторая - возможность установить размер сегмента равным размеру всего доступного физического адресного пространста (из-за того, что разрядность регистров сравнялась с разрядностью шины адреса).

Наличие "теневых регистров" для кеширования характеристик сегментов, связанных с сегментными регистрами, и позволяющих "запомнить" то состояние сегментного регистра, которое было установлено в защищенном режиме, даже после перехода назад в реальный, было документировано еще для 80286, в котором они также могут быть использованы (на этот раз - действительно недокументированным способом) для доступа к всей физической памяти из реального режима, однако не в виде линейной адресации, как в 80386, а через "окна"-сегменты размером 64кб.

Примечания

  1. http://books.google.ru/books?id=MKcaOgrUYoMC&pg=PA58&dq=«unreal+mode»&hl=en&sa=X «Unreal mode became so widely used… that Itnel was forced to support it in all later processors, although its presence was never documented»
  2. The Unabridged Pentium 4.

Ссылки

Литература

  • The Unabridged Pentium 4 IA32 Processor Genealogy, Addison Wesley ISBN 0-321-24656-X. «Big real mode»



Wikimedia Foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Полезное


Смотреть что такое "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… …   Wikipedia

  • 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


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»