Лекции по Вычислительным машинам, системам и сетям   

3. Тридцатидвухразрядные процессоры фирмы Intel

3.16. Форматы шлюзов

Шлюзы, их назначение и использование были подробно рассмотрены ранее в разд. 3.1. Ограничимся рассмотрением их форматов. Напомним, что через шлюзы можно обратиться к «исполняемым» сегментам и нельзя обратиться к сегментам данных.

Шлюз вызова имеет формат, приведенный на рис. 3.25.

 

7                                                     0

0h

Смещение 7-0

1h

Смещение 15-8

2h

Селектор 7-0

3h

Селектор 15-8

4h

0       0       0

PC

5h

P

DPL

0

1 1 0 0

6h

Смещение 23-16

7h

Смещение 31-24

Рис. 3.25

Поле селектор адресует дескриптор, на который ссылается шлюз. Поле смещение задает достоверную точку входа в привилегированную подпрограмму. Бит Р аналогичен такому же биту в дескрипторах, но называется он не битом «присутствия» (здесь нечему присутствовать !), а битом «достоверности шлюза». Поле DPL задает уровень привилегий шлюза. Назначение поляPC (parameter counter – счетчик параметров) рассмотрим позже. В поле TYPE для шлюза вызова должно быть задано 1100 (шлюзы МП 286 не рассматриваем, существенно они не отличаются).

Шлюз вызова может располагаться в GDT или в LDT. Обращаться к нему можно командами jmp far и call far. Обращение к такому шлюзу командой jmp far особого смысла не имеет, так как по этой команде через шлюз вызова не разрешен переход на более высокий уровень привилегий. Поэтому для обращения к шлюзу вызова обычно используют команду call far и, следовательно, шлюз вызова предназначен для вызова привилегированных подпрограмм. Если через шлюз вызова перешли на более высокий уровень привилегий, то, согласно правилу, должны сменить и стек на более привилегированный.

Вершину нового стека МП автоматически извлечет из поля сегмента TSS текущей задачи. В новый стек МП загружает адрес возврата и вершину старого стека. Также в подпрограмму надо передавать ряд параметров. Шлюз вызова позволяет организовать передачу параметров в под-программу. Параметры заранее записывают в старый стек, а в поле PC задают количество передаваемых параметров. При переходе через шлюз вызова МП перекачает заданное число параметров из старого стека в новый. Так как размер поля PC ‑ 5 бит, а любой параметр представляет собой слово или двойное слово (для шлюзов вызова 16- и 32-разрядных приложений), то максимально можно передать 31 двойное слово (или 31 слово). Возврат из привилегированной подпрограммы осуществляется как обычно командой retf.

Шлюз задачи приведен на рис. 3.26.

 

7                                                     0

0h

Не используется

1h

Не используется

2h

Селектор 7-0

3h

Селектор 15-8

4h

Не используется

5h

P

DPL

0

0 1 0 1

6h

Не используется

7h

Не используется

Рис. 3.26

Поля «смещение» нет, поскольку в задаче нет точки входа. Нет поля РC, поскольку задачи изолированы друг от друга и параметры между ними не передаются. В поле TYPE должно быть записано 0101. Шлюз задачи может располагаться в GDT, LDT и IDT. К нему можно обратиться командами jmp far, call farGDT или LDT) или int nIDT).

Шлюз прерывания и Шлюз ловушки приведены на рис. 3.27.

 

7                                                     0

0h

Смещение 7-0

1h

Смещение 15-8

2h

Селектор 7-0

3h

Селектор 15-8

4h

Не используется

5h

P

DPL

0

1 1 1 0/1

6h

Смещение 23-16

7h

Смещение 31-24

Рис. 3.27

Поле «смещение» задает достоверную точку входа в обработчик прерывания. В поле TYPE должно стоять 1110 для шлюза прерывания и 1111 для шлюза ловушки. Никакие параметры в обработчик не передаются. Эти шлюзы могут располагаться только в IDT и служат для вызова обработчиков прерываний. Шлюз ловушки предназначен для внутренних прерываний (особых случаев), а шлюз прерываний ‑ для внешних прерываний. Разница между этими шлюзами в одном: при переходе через шлюз прерываний МП сбрасывает флаг разрешения внешних прерываний (IF), а при переходе через шлюз ловушки он этого не делает.



*****

© 2009-2017 Банк лекций siblec.ru
Лекции для преподавателей и студентов. Формальные, технические, естественные, общественные, гуманитарные, и другие науки.