Системные регистры
В состав этой группы 32-битных регистров входят регистры управления CR4 –CR0, регистры системных адресовGDTR,LDTR,IDTR,TRи регистры отладкиDR7 –DR0. Эти регистры доступны только в защищенном режиме для программ, имеющих максимальный уровень привилегий 0. Для доступа к системным регистрам используются специальные инструкции пересылки данных (см. разд.2.1).
Управляющие регистры (ControlRegisters) хранят признаки состояния процессора общие для всех задач. Форматы содержимого регистров управленияCR0,CR2, CR3 приведены на рис.$.7,8,9. РегистрCR1 в процессорах доPentium4 не используется (резервирован для последующих моделей).
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
NE |
ET |
TS |
ЕМ |
MP |
PE |
PG |
PC |
NW |
|
|
|
|
|
|
|
|
|
|
AM |
|
WP |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
Рис. $.7. Форматы содержимого регистра управления CR0
Регистр CR0обеспечивает общее управление режимами работы процессора. Назначение бит регистра CR0 представлено ниже.
РЕ (ProtectionEnable) – разрешение защиты. Установка этого флага инструкциейLMSWилиLOAD CR0переводит процессор в защищенный режим, возвращение в реальный режим (сброс флага) возможен только по инструкцииLOAD CR0. Сброс бита РЕ является частью довольно длинной последовательности инструкций, подготавливающих корректное переключение в реальный режим.
МР (Monitor Processor Extension) – мониторинг сопроцессора. Установка МР=1 позволяет вызывать исключение #NMпо первой же ожидающей инструкцииFPUпосле переключения задач (приTS=1) для сохранения и восстановления контекста сопроцессора.
ЕМ (Processor Extension Emulated) – эмуляция сопроцессора. Установка этого флага вызывает появление исключения #NM(или прерывания от сопроцессора) при каждой инструкции, относящейся к сопроцессору, что позволяет прозрачно осуществлять его программную эмуляцию.
Сочетание МР=1, ЕМ=0 используется при наличии сопроцессора, а МР=0, ЕМ=1 при его программной эмуляции.
TS(TaskSwitch) – флаг переключения задач, устанавливается автоматически при переключении задач. ПриTS=1 и МР=1 следующая инструкция, относящаяся к сопроцессору, вызовет исключение #NM, что позволяет программно определить, относится ли контекст сопроцессора к текущей задаче. Бит сбрасывается инструкциейCLTS.
Сочетание МР=0, ЕМ=0, TS=0, устанавливаемое по аппаратному сбросу, обеспечивает полную совместимость с 8086/88 (исключение #NMне вырабатывается).
В табл. $.1 обобщаются действия процессора при разных сочетаниях флагов TS,EMиMP, в случае встречи инструкцииFPU.
Таблица $.1
Действия выполняемые fpUинструкциями для различных сочетаний флаговTs,eMиMp
Флаги CR0 |
Тип инструкции FPU | |||
EM |
MP |
TS |
Обычная |
WAIT/FWAIT |
0 |
0 |
0 |
Исполнение |
Исполнение |
0 |
0 |
1 |
Вызов #NM |
Исполнение |
0 |
1 |
0 |
Исполнение |
Исполнение |
0 |
1 |
1 |
Вызов #NM |
Вызов #NM |
1 |
0 |
0 |
Вызов #NM |
Исполнение |
1 |
0 |
1 |
Вызов #NM |
Исполнение |
1 |
1 |
0 |
Вызов #NM |
Исполнение |
1 |
1 |
1 |
Вызов #NM |
Вызов #NM |
ЕТ (ExtensionType) – в процессорах семействP5+ не используется (резервирован); в процессорахIntel386, 486 установка значения ЕТ=1 указывает на включение в систему математических сопроцессоровIntel387DX;
NE (Numericerror) – управление прерываниямиFPU, при установке значения битаNE=1 ошибки, возникающие при выполнении инструкции FPU, вызывают исключение типа #MF(ошибка FPU) при выборке следующей инструкции FPU; при установке значенияNE=0 ошибка FPU вызывает выдачу на соответствующий вывод процессора сигналаFERR#=0, который поступает во внешний контроллер прерываний (этот способ обслуживания прерываний FPU реализуется в персональных компьютерах);
WP (WriteProtect) – защита от записи, при установке значения битаWP=1 программам супервизора, имеющим уровень привилегий 0-2, запрещается запись на страницы пользователя предназначенные только для чтения; при значенииWP=0 такая запись разрешена;
AM (AlignmentMask) – управление проверкой выравнивания, разрешает при установке значения бита АМ=1 проверку выравнивания адресов по границам слов (кратные двум) или двойных слов (кратные четырем) выборке операндов из памяти, если в регистреEFLAGSустановлено значение бита АС=1 и выполняемая программа имеет уровень привилегии 3 (программа пользователя);
NW (NotWrite-through) – запрещение записи в кэш-память, совместно с битомCDопределяет режим работы внутренней кэш-памяти процессора;
CD(CacheDisable) – запрещение заполнения кэш-памяти, совместно с битом NW определяет режим работы внутренней кэш-памяти процессора;
PG (PagingEnable) – разрешение страничной трансляции адреса, при установке значенияPG=1 обеспечивает страничную адресацию памяти в защищенном режиме (см. табл.$.2).
Таблица $.2.