1. Межсегментные передачи управления внутри кольца одинакового уровня привилегий. Такие передачи выполняются командами JMP, CALL, RET, IRET (при NT=0). Команды JMP и CALL содержат полный логический адрес перехода, поэтому целевые значения селектора CS и внутрисегментного смещения IP выбираются из кода команды. При выполнении команд RET и IRET (при NT = 0) значения CS и IP берутся из стека.
2. Косвенные межсегментные передачи управления через шлюз вызова осуществляются с помощью команды CALL к тому же или более высокому уровню привилегий. Дескриптор шлюза вызова должен размещаться в таблице GDT или LDT. Чтобы передать управление шлюзу, необходимо, чтобы вызывающая программа с уровнем привилегий CPL была не менее привилегированна, чем уровень привилегий DPL шлюза. Если шлюз доступен, адрес перехода (CS : IP) выбирается из соответствующих полей шлюза. Значение смещения, указываемое в команде CALL игнорируется.
Схема поиска целевых значений CS и IP при косвенных межсегментных передачах управления через шлюз вызова имеет вид:
CALL:
<селектор шлюза вызова> <дескриптор шлюза вызова> < CS : IP >
3. Косвенные межсегментные передачи управления через шлюз ловушки или прерывания. Такие передачи характерны для команд программного прерывания INT n, аппаратных прерываний и особых ситуаций (внутренних прерываний). Дескрипторы шлюзов прерываний и ловушек помещаются в таблицу IDT. В качестве индекса соответствующего шлюза прерывания и ловушки в таблице IDT используется номер аппаратного или программного прерывания либо номер особой ситуации, автоматически вычисляемый процессором. Если шлюз доступен, адрес точки входа в процедуру обработчика (CS : IP) выбирается из соответствующих полей шлюза прерывания или ловушки.
Схема поиска целевых значений CS и IP при косвенных межсегментных передачах управления через шлюз ловушки или прерывания имеет вид:
индекс шлюза ловушки дескриптор шлюза ловушки
< или шлюза прерывания> < или шлюза прерывания > < CS : IP >
в IDT в IDT
4. Косвенные межсегментные передачи управления через шлюз задачи могут выполняться либо командами программных прерываний INT n, либо как реакция на внутренние или внешние прерывания, либо командами JMP и CALL. Шлюзы задач могут размещаться в таблицах GDT, LDT или IDT. При реализации передач управления через шлюз задачи с помощью селектора, размещенного в дескрипторе шлюза задачи, выбирается дескриптор TSS, после чего запускается механизм переключения задач.
Схема поиска целевых значений CS и IP при косвенных межсегментных передачах управления через шлюз задачи имеет вид:
JMP, CALL
<селектор шлюза >
задачи <дескриптор шлюза > <селектор TSS >
INT n <дескриптор TSS > <сегмент TSS > <CS : IP >
<индекс шлюза задачи>
в IDT
5. Межсегментные передачи управления через прямое переключение задач могут выполняться либо командой CALL (селектор целевого сегмента TSS находится в GDT, либо командой IRET (если в регистре FLAGS установлен флаг NT: в этом случае команда IRET возвращает управление вызывающей задаче, используя поле Обратной связи В текущем TSS). В качестве селектора в таких командах указывается значение, загружаемое в регистр TR. С помощью селектора TR в GDT выбирается дескриптор TSS, и запускается механизм переключения задач.
Схема поиска целевых значений CS и IP при прямом переключении задач имеет вид:
CALL:
<селектор TSS>
<дескриптор TSS > <сегмент TSS > <CS : IP >
IRET (при NT =1) :
селектор TR из
<поля обратной связи>
сегмента TSS
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.