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

UptoLike

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

45
программы (до перезагрузки компьютера) линейную адресацию можно будет
использовать из любой другой программы DOS, как поступил в своем
примере Томас Роден.
Рассмотрим более подробно процедуру переключения одного из
дополнительных сегментных регистров в режим линейной адресации. Каждый
сегментный регистр, как указано в документации [5], состоит из видимой и
невидимой (теневой) частей. Информацию в видимую часть можно
записывать напрямую при помощи обычных команд пересылки данных (M0V
и др.), а для записи в невидимую часть применяются специальные команды,
которые доступны только в защищенном режиме. Теневая часть представляет
собой так называемый дескриптор (описатель) сегмента, длина которого
равна 8 байтам.
При переходе от 16-разрядной архитектуры к 32-разрядной (то есть от
i286 к i386) разработчики нового процессора попытались сохранить
совместимость снизу вверх по структуре системных регистров, в результате
чего дескрипторы сегментов приобрели довольно уродливый (с точки зрения
технической эстетики) видполя предела и базового адреса разделены на
несколько частей. Кроме того, поле предела оказалось ограничено 20
разрядами, что вынудило разработчиков применить еще один
радиолюбительский трюкввести бит гранулярности G, чтобы можно было
задавать размер сегмента, превышающий 16 Мбайт.
программы (до перезагрузки компьютера) линейную адресацию можно будет
использовать из любой другой программы DOS, как поступил в своем
примере Томас Роден.
     Рассмотрим более подробно процедуру переключения одного из
дополнительных сегментных регистров в режим линейной адресации. Каждый
сегментный регистр, как указано в документации [5], состоит из видимой и
невидимой (теневой) частей. Информацию в видимую часть можно
записывать напрямую при помощи обычных команд пересылки данных (M0V
и др.), а для записи в невидимую часть применяются специальные команды,
которые доступны только в защищенном режиме. Теневая часть представляет
собой так называемый дескриптор (описатель) сегмента, длина которого
равна 8 байтам.
     При переходе от 16-разрядной архитектуры к 32-разрядной (то есть от
i286 к i386) разработчики нового процессора попытались сохранить
совместимость снизу вверх по структуре системных регистров, в результате
чего дескрипторы сегментов приобрели довольно уродливый (с точки зрения
технической эстетики) вид — поля предела и базового адреса разделены на
несколько частей. Кроме того, поле предела оказалось ограничено 20
разрядами,   что   вынудило    разработчиков   применить    еще    один
радиолюбительский трюк — ввести бит гранулярности G, чтобы можно было
задавать размер сегмента, превышающий 16 Мбайт.




                                     45