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

Обязательным условием межсегментных передач управления с увеличением уровня привилегий является использование шлюза вызова, заданного командой FAR CALL. Смещение, заданное командой, игнорируется.


Рис.11. Схема проверок и межсегментных переходов без изменения или увеличения уровня привилегий.

Чтение шлюза вызова является первым этапом выполнения команды. На этом этапе производятся стандартные проверки действительности селектора. Селектор шлюза вызова может указывать на глобальную или локальную таблицы дескрипторов.

После чтения дескриптора шлюза вызова проверяется соответствие его типа и условие его доступа:

(CPL <= DPLШЛ) &(RPL <= DPLШЛ)

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

Проверка доступности целевого кодового сегмента по уровням привилегий определяется условием:

DPL <= CPL

При положительных результатах этой проверки производится третий этап перехода. При этом:

  • полный указатель адреса возврата (содержимое регистра CS указателя команд IP) сохраняется в стеке;
  • дескриптор целевого кодового сегмента, выбранный из таблицы дескрипторов по селектору шлюза вызова, заносится в дескрипторный регистр (DR на рис. 11);
  • значение DPL из селектора целевого кодового сегмента заносится в поле уровня привилегий (CPL) сегментного регистра CS;
  • поле индекса и типа таблицы селектора целевого кодового сегмента из дескриптора шлюза вызова (SD на рис. 11) заносится в соответствующие поля сегментного регистра CS;
  • значение поле смещения дескриптора шлюза вызова (SD на рис. 11) заносится в указатель команд IP.

Если переход привел к изменению уровня привилегий, то производится еще один завершающий этап. Это смена стека.

<< Назад