Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ASM.docx
Скачиваний:
3
Добавлен:
31.07.2019
Размер:
616.28 Кб
Скачать

I80386 с 32-разрядной шиной команд и данных в целях совместимости программ

разработчики не стали менять формат дескриптора, а просто использовали сво-

бодные поля. Внутри процессора эти поля объединены. Внешне же они остались

разделенными, и при программировании с этим приходится мириться.

Следующий интересный момент связан с тем, что размер сегмента в защищен-

ном режиме может достигать 4 Гбайт, то есть занимать все доступное физическое

пространство памяти. Как это возможно, если суммарный размер поля размера

сегмента составляет всего 20 битов, что соответствует величине 1 Мбайт? Секрет

скрыт в поле гранулярности — бит G (см. рис. 2.9). Если G = 0, то значение в поле

размера сегмента означает размер сегмента в байтах, если G - 1, — то в страницах.

Размер страницы составляет 4 Кбайт. Нетрудно подсчитать, что когда максималь-

ное значение поля размера сегмента составляет Offfffh, то это соответствует 1 М стра-

ниц или величине 1 М х 4 Кбайт = 4 Гбайт.

Выведение информации о базовом адресе сегмента и его размере на уровень

процессора позволяет аппаратно контролировать работу программ с памятью

и предотвращать обращения к несуществующим адресам либо к адресам, находя-

щимся вне предела, разрешенного полем размера сегмента limit.

Другой аспект защиты заключается в том, что сегменты неравноправны в пра-

вах доступа к ним. Информация об этом содержится в специальном байте AR, вхо-

дящем в состав дескриптора. Наиболее важные поля байта AR — это dpi и биты R/W,

C/ED и I, которые вместе определяют тип сегмента. Поле dpi — часть механизма

защиты по привилегиям. Суть этого механизма заключается в том, что конкрет-

ный сегмент может находиться на одном из четырех уровней привилегированно-

сти с номерами О, 1, 2 и 3. Самым привилегированным является уровень 0. Суще-

ствует ряд ограничений (опять-таки на аппаратном уровне) на взаимодействие

сегментов кода, данных и стека с различными уровнями привилегий.

Итак, мы выяснили, что в защищенном режиме перед использованием любой

области памяти должна быть проведена определенная работа по инициализации

соответствующего дескриптора. Эту работу выполняет операционная система или

программа, сегменты которой также описываются подобными дескрипторами. Все

дескрипторы собираются вместе в одну из трех дескрипторных таблиц:

ш глобальная дескрипторная таблица (Global Descriptor Table, GDT), ее адрес

хранится в регистре GDTR;

II локальная дескрипторная таблица (Local Descriptor Table, ldt), ее адрес хра-

нится в регистре LDTR;

ш дескрипторная таблица векторов прерываний (Interrupt Descriptor Table, IDT),

ее адрес хранится в регистре IDTR.

В какую именно таблицу должен быть помещен дескриптор, определяется егоназначением. Адрес, по которому размещаются эти дескрипторные таблицы, мо-жет быть любым; он хранится в специально предназначенном для этого адреса си-стемном регистре.

Схемы, показанные на рис. 2.7, б и в, иллюстрируют Принцип формирования адреса в защищенном режиме. Важно отметить изменение роли сегментных регистров. В защищенном режиме они содержат не адрес, а селектор, то есть указательна соответствующую ячейку одной из дескрипторных таблиц (GDT или LDT).Остальные элементы архитектуры IA-32, такие как формат машинных команд,типы данных и др., логично рассмотреть в следующих главах в контексте соответ-

ствующих аспектов использования языка ассемблера.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]