Системное программное обеспечение. Особенности программирования 32-разрядных процессоров. Рощин А.В. - 44 стр.

UptoLike

Составители: 

44
(почти не описан в литературе и не рассматривается в фирменном
руководстве по программированию).
Для пользователей обычных персональных компьютеров линейная
адресация в чистом виде интереса не представляет по тем же причинам, что и
защищенный режим: DOS и BIOS функционируют только в реальном режиме
с 64-килобайт-ными сегментами, и при переходе в любой другой режим
программист оказывается один на один с аппаратурой ЭВМбез
документации. Однако кроме чистых режимов процессоры Intel способны
работать и в режимах гибридных. Еще в 1989 году Томас Роден (Thomas
Roden) предложил использовать интересную комбинацию сегментной (для
кода и данных) и линейной (только для данных) адресации [2].
Предложенный им метод позволяет, находясь в обычном режиме DOS,
работать со всей доступной памятью в пределах четырехгигабайтного
адресного пространства процессора Intel 80386. Чтобы включить режим
линейной адресации данных, необходимо снять ограничения на размер
сегмента в теневом регистре, соответствующем одному из дополнительных
сегментных регистров FS или G5 (при необходимости описание архитектуры
процессора Pentium можно найти в документации [3-5], размещенной в
Интернете на сервере Intel для разработчиков). Через избранный регистр
можно обращаться к любой области памяти с помощью прямой адресации
или используя в качестве индексного любой 32-разрядный регистр общего
назначения. После снятия ограничения запись в выделенный для линейной
адресации сегментный регистр выполнять нельзя, иначе нарушится
информация в соответствующем ему теневом регистре (предел сегмента
сохранится, но начальный адрес будет перезаписан новым значением). Однако
стандартные компиляторы и функции DOS с регистрами FS и GS не работают,
и соответственно, при вызове процедур эти регистры можно вообще «не
трогать» — их не нужно сохранять и восстанавливать. Достаточно один раз
снять ограничение на размер адресного пространства, и после выхода из
(почти не описан в литературе и не рассматривается в фирменном
руководстве по программированию).
     Для пользователей обычных персональных компьютеров линейная
адресация в чистом виде интереса не представляет по тем же причинам, что и
защищенный режим: DOS и BIOS функционируют только в реальном режиме
с 64-килобайт-ными сегментами, и при переходе в любой другой режим
программист оказывается один на один с аппаратурой ЭВМ — без
документации. Однако кроме чистых режимов процессоры Intel способны
работать и в режимах гибридных. Еще в 1989 году Томас Роден (Thomas
Roden) предложил использовать интересную комбинацию сегментной (для
кода и данных) и линейной (только для данных) адресации [2].
Предложенный им метод позволяет, находясь в обычном режиме DOS,
работать со всей доступной памятью в пределах четырехгигабайтного
адресного пространства процессора Intel 80386. Чтобы включить режим
линейной адресации данных, необходимо снять ограничения на размер
сегмента в теневом регистре, соответствующем одному из дополнительных
сегментных регистров FS или G5 (при необходимости описание архитектуры
процессора Pentium можно найти в документации [3-5], размещенной в
Интернете на сервере Intel для разработчиков). Через избранный регистр
можно обращаться к любой области памяти с помощью прямой адресации
или используя в качестве индексного любой 32-разрядный регистр общего
назначения. После снятия ограничения запись в выделенный для линейной
адресации сегментный регистр выполнять нельзя, иначе нарушится
информация в соответствующем ему теневом регистре (предел сегмента
сохранится, но начальный адрес будет перезаписан новым значением). Однако
стандартные компиляторы и функции DOS с регистрами FS и GS не работают,
и соответственно, при вызове процедур эти регистры можно вообще «не
трогать» — их не нужно сохранять и восстанавливать. Достаточно один раз
снять ограничение на размер адресного пространства, и после выхода из


                                      44