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

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

3.17. Программная модель 32-разрядного МП

Под программной моделью будем понимать набор внутренних регистров МП, программным образом доступных программисту. В данном подразделе речь пойдет о регистрах, с которыми работает рядовой пользователь. Кроме этих регистров в МП есть еще системные регистры, которые рассмотрим позже.

Программная модель 32-разрядного процессора, с точки зрения пользователя, практически не отличается от программной модели МП 8086. Единственное существенное отличие состоит в том, что регистры МП 386 и выше ‑ 32-разрядные (в МП 8086 регистры 16-разрядные). Кроме того, в регистр флагов (ef ) добавлен ряд новых флагов. Подробно формат регистра ef будет рассмотрен в конце этого подраздела. Поскольку программная модель МП 8086 рассмотрена ранее, то здесь ограничимся рисунком программной модели 32-разрядного процессора (рис. 3.28) без какого-либо ее описания.

Пользователь должен знать, что ему доступны не все команды. Некоторые команды в защищенном режиме выполняются только на 0-м уровне привилегий. Такие команды называются привилегированными. К ним относятся: lldt; lgdt; lidt; ltr; clts; mov cr, r; mov r , cr; mov dr, r; mov r, dr; mov tr, r; mov r, tr (и ряд других).

 

31                          16

15              8

7              0

 

eax

  ah

al

ax

ecx

  ch

cl

cx

edx

  dh

dl

dx

ebx

 

bh

bl

bx

         

esp

 

sp

 

ebp

 

bp

 

esi

 

si

 

edi

 

di

 
         

ef

 

f

 
         

eip

 

ip

 
         
 

Видимые части à{

es

 
 

cs

 
 

ss

 
 

ds

 
 

fs

 
 

gs

 

Рис. 3.28

Кроме того, некоторые команды выполняются только если CPL£IOPL. Такие команды называются чувствительными к уровню привилегий. К ним (в защищенном режиме) относятся команды in; out; ins; outs; cli; sti.

На рис. 3.29 приводится форма регистра флагов ef.

10

9

8

7

6

5

4

3

2

1

0

df

if

tf

sf

zf

-

af

-

pf

-

cf

                     

21

20

19

18

17

16

15

14

13

12

11

if

vip

vif

ac

vm

rf

-

nt

iopl

of

                   

31

               

22

Резерв

 

Рис. 3.29

Большинство флагов хорошо известны еще из МП 8086. Часть флагов была описано ранее. Осталось всего три еще не упоминавшихся флага: RF, AC и ID. Эти три флага далее рассмотрим подробно, а остальные просто перечислим:

CF флаг переноса (разд. 2.6);

PF флаг четности (разд. 2.6);

AF флаг межтетрадного переноса (разд. 2.6);

ZF флаг нулевого результата (раздел 2.6);

SF флаг отрицательного результата (флаг знака) (разд. 2.6);

TF флаг трассировки (флаг «пошагового» выполнения программы) (разд. 2.6);

IF флаг разрешения внешних прерываний (разд. 2.2);

DF флаг направления. Задает автоинкремент или автодекремент регистров в «строковых» командах (разд. 2.6);

OF флаг переполнения разрядной сетки (разд. 2.5);

IOPL (input-output privilege level fild) ‑ это не флаг, а двух битовое поле, задающее уровень привилегий операций ввода-вывода (разд. 3.11);

NT (nested task) ‑ флаг вложенной задачи ( проверяется командой iret ) (разд. 3.14);

- VM (virtual mode) ‑ режим V86 (разд. 3.10).

RF (resume)флаг рестарта (возврата). Внутри МП есть системные регистры отладки DRi . В этих регистрах можем задавать «контрольные точки останова». Когда МП вырабатывает адрес, совпадающий с такой точкой, происходит прерывание типа 1. Обработчик этого прерывания выводит на экран содержимое внутренних регистров МП.

При возврате из обработчика происходит рестарт команды (только если контрольная точка задана «по команде», см. описание регистров dr в разд. 3.18). Однако при этом МП снова выработает тот же адрес и, так как «контрольная точка» не изменилась, снова будет то же самое прерывание. Во избежание подобной ситуации обработчик прерывания по контрольной точке должен либо сменить адрес контрольной точки в регистре dr, либо установить RF в единицу. При RF = 1 прерывание при рестарте будет заблокировано. После выполнения «виноватой» команды МП сбрасывает RF в ноль.

AC (alignment check) ‑ флаг выравнивания. Если этот флаг установлен, то МП генерирует прерывание типа 17 при обращении к не выровненным в памяти данным (например, при обращении к слову по нечетному адресу). Это прерывание генерируется, если кроме установки флага АС выполняются еще два условия: текущий CPL = 3 и бит АМ в регистре cr0 установлены в единицу. Этот флаг появился в МП 486.

VIF (virtual interrupt) – виртуальный флаг прерываний (разд. 3.11).

VIP (virtual interrupt pending) – виртуальный флаг отложенного прерывания (разд. 3.11).

ID (identification) – если программа может изменять значение этого флага, значит процессор поддерживает команду cpuid. Эта команда возвращает сведения о процессоре.



*****
© Банк лекций Siblec.ru
Формальные, технические, естественные, общественные, гуманитарные, и другие науки.