Оглавление Об учебном пособии
Использованные источники1 Использованные источники2 Использованные источники3 Использованные источники4 Использованные источники5 Использованные источники6

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


Проверки по соответствию уровней привилегий:
для команд (LDS, LES, LFS, LGS,) reg, mem - (CPL <= DPL) & (RPL <= DPL);
для команды LSS peg, mem. - (CPL = DPL = RPL)
Рис.7. Схема выполнения команд загрузки указателей в регистры сегментов

Основными этапами выполнения команды и проверок являются:

  • Чтение по адресу mem смещения в сегменте данных DS и селектора целевого сегмента. Селектор целевого сегмента используется для обращения к таблице дескрипторов. Выбранные значения смещения и селектора временно сохраняются в буферных регистрах.

  • Обращение к таблице дескрипторов. Перед обращением к таблице дескрипторов проводится ряд проверок:
    1. Действительность селектора целевого сегмента. Он должен быть не нуль-селектором (только при обращении к GDT) . Проверка производится по полю index (рис. 7). Нуль-селектор определяет нулевой индекс. Условие проверки index <> 0.
    2. Возможность выхода за пределы таблицы дескриптора. Индекс селектора не должен превышать предел таблицы дескрипторов index <= Lt, где Lt - предел таблицы дескрипторов. При этом выбор таблицы определяется битом типа таблицы (G/L) селектора. Базовый адрес таблицы дескрипторов At и предел Lt определяются полями регистра таблиц дескрипторов GTDR или LDTR.

  • Обращение к таблице и чтение дескриптора целевого сегмента. После чтения дескриптора целевого сегмента (сегмент временно сохраняется в буферном регистре) проверяются:
    1. Тип дескриптора по байту прав доступа. Дескриптор должен быть несистемным (S = 0) и читаемым (R = 1).
    2. Условие разрешения доступа к данным по уровням привилегий
      (CPL <= DPL) & (RPL <= DPL)

Для всех сегментов данных (кроме стековых) при выполнении указанных условий процессор выполняет следующие действия:

  • значение селектора загружается в соответствующий сегментный регистр (на рис. 7 - DS);
  • значение дескриптора целевого сегмента данных загружается в дескрипторный регистр, ассоциатированный с заданным сегментным регистром;
  • значение смещения загружается в РОН, указанный полем reg команды.

В противном случае процессор формирует нарушение общей защиты и не производит никаких изменений в выбранном сегментном регистре данных.

<< Назад