October 18 2017 02:44:57
Навигация
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации .

Забыли пароль?
Запросите новый здесь.
Команды VERR и VERW
ПРОЦЕССОРЫ ОБЩЕГО НАЗНАЧЕНИЯ И СИСТЕМЫ НА ИХ ОСНОВЕ

Команда ARPL выполняет сравнение значений двух младших разрядов (1-0) операндов, первый из которых хранится в памяти или регистре, второй в регистре. В качестве операндов используются селекторы, разряды (1-0) которых содержат запрашиваемый уровень привилегий RPL, имеющий значение от 00 (высший уровень) до 11 (низший уровень). Вторым операндом обычно служит селектор текущей программы, который предварительно перегружается из регистра CS в регистр, адресуемый командой ARPL. При этом младшие разряды регистра будут содержать уровень привилегий текущей программы CPL. Если RPL первого операнда-селектора меньше CPL, то значение RPL в этом операнде устанавливается равным CPL, т. е. уровень его привилегий снижается. При этом устанавливается признак нуля 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».

Комментарии
Нет комментариев.
Добавить комментарий
Пожалуйста, залогиньтесь для добавления комментария.
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, авторизуйтесьили зарегистрируйтесь для голосования.

Нет данных для оценки.

Время загрузки: 0.02 секунд 2,254,921 уникальных посетителей