Научная литература
booksshare.net -> Добавить материал -> Физика -> Александров Е.К. -> "Микропроцессорные системы" -> 63

Микропроцессорные системы - Александров Е.К.

Александров Е.К., Грушвицкий Р.И., Купрянов М.С., Мартынов О.Е. Микропроцессорные системы — Спб.: Политехника, 2002. — 935 c.
ISBN 5-7325-0516-4
Скачать (прямая ссылка): mikroprocessorniesistemi2002.djvu
Предыдущая << 1 .. 57 58 59 60 61 62 < 63 > 64 65 66 67 68 69 .. 528 >> Следующая

снижается. При этом устанавливается признак нуля ZF = 1, указывающий на
возможную попытку нарушения защиты. Если (RPL) >= (CPL), то значение RPL
сохраняется и признак нуля сбрасывается: ZF = 0.
СИСТЕМА КОМАНД: ОПЕРАЦИИ УПРАВЛЕНИЯ
Команды VERR и VERW проверяют доступность выбранного сегмента при текущем
уровне привилегий и допустимость чтения или записи в этом сегменте.
Команда адресует память или регистр, где хранится селектор проверяемого
сегмента. С помощью этого селектора выбирается дескриптор сегмента, байт
доступа которого содержит бит R или W, определяющий право чтения или
записи. Для сегментов программ (CS) это бит разрешения считывания R, для
сегментов данных (DS, ES, FS, GS) - бит разрешения записи W. Таким
образом, команда VERR используется для проверки доступности сегментов
кодов, команда VERW - для проверки доступности сегментов данных. Если
выбранный сегмент при текущем уровне привилегий недоступен, или
чтение/запись в них запрещены, то признак нуля сбрасывается: ZF = 0. При
этом не возникает прерывания по нарушению защиты. Если проверяемый
сегмент доступен, то устанавливается значение признака ZF =1.
Команды LLDT, SLDT, LTR, STR, LAR, LSL, VERR, VERW выполняются только в
защищенном режиме. Попытка их выполнения в реальном режиме вызовет
прерывание типа 6 (неразрешенный код команды).
Команды LGDT, LLDT, LIDT, LTR, CLTS при работе в защищенном режиме
выполняются только при наиболее высоком уровне привилегий текущей
программы: CPL = 0. Выполнение этих команд при других уровнях привилегий
программ вызывает прерывание с номером Ne = 13 (#GP - нарушение защиты).
2.3.4. КОМАНДЫ УПРАВЛЕНИЯ ПРОЦЕССОРОМ
Команда LMSW загружает из памяти или регистра слово состояния машины MSW
в младшие 16 разрядов регистра управления CR0. Так как младший бит MSW
управляет включением защиты, то данная команда используется для перехода
в защищенный режим. Команда SMSW пересылает содержимое 16 младших
разрядов CR0 в регистр или ячейку памяти, заданные в команде.
Команда NOP ("пустая" команда), не вызывающая выполнения каких-либо
операций, служит для реализации программных задержек или заполнения
пропусков, образовавшихся в программе. Команда HLT прекращает выполнение
программы и переводит процессор в состояние останова, выход из которого
происходит при поступлении сигналов прерывания или перезапуска (Reset).
Отметим, что команды HLT и LMSW выполняются только при наиболее высоком
уровне привилегий программы: CPL = 0. При всех других значениях CPL эти
команды вызывают прерывание с номером Ne = 13 (#GP - нарушение защиты).
Команда CPUID позволяет получить информацию о типе процессора,
используемом в данной системе. Эта информация вводится после выполнения
данной команды в регистры ЕАХ, ЕВХ, ЕСХ, EDX и может быть считана
пользователем или операционной системой. Содержание этой информации
зависит от содержимого ЕАХ, которое предварительно записывается в этот
регистр.
Если предварительное содержимое ЕАХ = 0, то после выполнения команды
CPUID в этом регистре будет установлено значение ЕАХ = 2 (идентификатор
семейства Р6). В регистрах EBX:ECX:EDX будет записано "Genuinelntel"
("Настоящий Интел") в коде ASCII (один символ в каждом байте), что
указывает на производство данного процессора 999 на заводах компании
"Intel".
Если предварительное содержимое ЕАХ = 1, то в регистрах ЕАХ, EDX будет
содержаться информация о типе и модели процессора, о реализуемых
процессором режимах и функциональных возможностях (регистры ЕВХ,ЕСХ при
этом не используются). Формат содержимого регистров ЕАХ, EDX после
выполнения команды CPUID представлен для этого случая на рис. 2.15.
ПРОЦЕССОРЫ ОБЩЕГО НАЗНАЧЕНИЯ И СИСТЕМЫ НА ИХ ОСНОВЕ
а)
31_________________________1413 12
11______________87____________43__________О
| Резервировано (R) | Туре [ Family | Model |
Stepping ID
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
CMOV | MCA | PGE | MTRR | SEP R APIC CX8 MCE PAE MSR TSC |
PSE DE VME FPU
Резервировано (R) XMM FXSR MMX R R R R PN PSE36
PAT
31 2625 24 23 22 19 18 17 16
Рис. 2.15. Форматы содержимого регистров ЕАХ (а) и EDX (б) после
выполнения команды CPUID (предварительное содержимое ЕАХ = 1)
Регистр ЕАХ (рис. 2.15, а) содержит поля, указывающие тип (Туре),
семейство (Family) и модель (Model) процессора, которые для процессоров
семейства Р6 имеют следующие значения: Туре = 00, Family = 0110, Model =
0001. Регистр EDX (рис. 2.15, б) содержит биты, единичное значение
которых определяет следующие характеристики процессора:
FPU - указывает на наличие блока обработки чисел с плавающей точкой FPU;
VME - процессор реализует режим виртуального 8086, используя биты VME,
PVI в регистре CR0 и биты VIF, VIP в регистре EFLASGS;
DE - процессор поддерживает отладку с установкой контрольных точек,
используя бит DE в регистре CR0 и регистры отладки DR4, DR5;
PSE - процессор обеспечивает возможность использования страниц объемом 4
Мбайт при установке значения бита PSE = 1 в регистре CR0;
Предыдущая << 1 .. 57 58 59 60 61 62 < 63 > 64 65 66 67 68 69 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

Есть, чем поделиться? Отправьте
материал
нам
Авторские права © 2009 BooksShare.
Все права защищены.
Rambler's Top100

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed