logo

Главная Система команд x86 Базовая система команд CPU VERW

Система команд x86

Программирование - Архитектура и система команд микропроцессоров x86
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

VERW

Проверить сегмент на запись

Влияние команды на флаги и форматы команды:

OF

DF

IF

TF

SF

ZF

AF

PF

CF

 

 

 

 

 

*

 

 

 

 

Код

Команда

Описание

Проц.

Пример

OF 00 /4

VERR r/m16

Установить ZF=1, если сегмент, заданный в r/m16 доступен для чтения

Intel286

verr cx

OF 00 /5

VERW r/m16

Установить ZF=1, если сегмент, заданный в r/m16 доступен для записи

Intel286

verw dx

Описание:

Команды VERR и VERW определяют доступен ли заданный операндом-источником сегмент на текущем уровне привилегий для чтения (VERR) или для записи (VERW). Операндом команд может быть 16-битный регистр общего назначения или операнд в памяти, который содержит значение селектора проверяемого сегмента. Если сегмент доступен, то устанавливается флаг ZF, если же сегмент не доступен, то флаг ZF сбрасывается.

Для установки флага ZF командами VERR, VERW необходимо выполнение следующих условий:

  • индекс селектора должен попадать в пределы таблицы дескрипторов (GDT или LDT); селектор должен быть не нулевым;
  • селектор должен указывать на дескриптор сегмента кода или данных, но не на дескриптор TSS, дескриптор LDT или дескриптор шлюза;
  • для команды VERR сегмент должен быть доступен для чтения, а для команды VERW сегмент должен быть доступным для записи сегментом данных;
  • если сегмент кода доступен для чтения и согласован, то уровень привилегий дескриптора (DPL) может быть любым для команды VERR, иначе DPL должен быть больше или равен (иметь меньше или столько же привилегий) CPL (текущий уровень привилегий) и RPL селектора.

Производимая проверка является такой же, как если бы сегмент был загружен в регистр DS, ES, FS или GS и был произведен указанный доступ (чтение или запись). Флаг ZF устанавливается по результату проверки. Никакие значение входного операнда-селектора не могут приводить к генерации особых ситуаций защиты, программное обеспечение с помощью команд VERR и VERW анализирует возможные проблемы доступа к сегментам в дальнейшем.

Операция:

IF SRC(Offset) > (GDTR(Limit) OR (LDTR(Limit))

THEN

  ZF = 0;

ELSE

  Загрузить информацию из дескриптора сегмента;

  IF Descriptor.Type = 0 OR Descriptor.Type ≠ (Согласованный кодовый сегмент) AND ((CPL > DPL) OR (RPL > DPL)) (* Системный дескриптор или несогласованный кодовый сегмент с DPL меньшим CPL или RPL *)

  THEN

     ZF = 0;

  ELSE

     IF ((Instruction = VERR) AND (Сегмент доступен для чтения)) OR ((Instruction = VERW) AND (Сегмент доступен для записи))

     THEN

        ZF = 1;

     FI;

  FI;

FI;

Особые ситуации защищенного режима:

#GP(0), если используется некорректный эффективный адрес операнда в памяти в сегментах CS, DS, ES, FS, GS или нулевой селектор.
#SS(0) при использовании некорректного эффективного адреса в сегменте SS.
#PF(Код ошибки) при страничной ошибке.
#AC(0) при невыровненной ссылке в память при текущем уровне привилегий равном 3.

Особые ситуации режима реальной адресации:

#UD при попытке исполнения команды.

Особые ситуации режима V86:

#UD при попытке исполнения команды.


Входит в группу команд: Базовая система команд CPU




Все права защищены © Алексей Ровдо, 1994-2023. Перепечатка возможна только по согласованию с владельцем авторских прав. admin@club155.ru

Top.Mail.Ru       Сервер радиолюбителей России - схемы, документация,

 соревнования, дипломы, программы, форумы и многое другое!   схемы новости электроники