Система команд x86 |
|
Программирование - Архитектура и система команд микропроцессоров x86 |
ARPL
Влияние команды на флаги и форматы команды:
* |
63 /r |
ARPL r/m16,r16 |
Корректирует RPL селектора в r/m16 по RPL селектора в r16 |
Intel286 |
arpl selector,dx |
Описание:
У команды ARPL два операнда. Первый операнд — это 16-битная переменная в памяти или двухбайтный регистр, который содержит значение селектора. Второй операнд — двухбайтный регистр. Если поле RPL (запрашиваемый уровень привилегий — младшие два бита) первого операнда меньше, чем поле RPL второго операнда, то устанавливается флаг ZF, а поле RPL первого операнда увеличивается до значения поля RPL второго операнда. В противном случае сбрасывается флаг ZF, и первый операнд не изменяется.
Команда ARPL используется в системном программном обеспечении. Эта команда позволяет убедиться в том, что селектор, переданный процедуре, не требует более высокого уровня привилегий, чем позволено вызывающей процедуре. Обычно, вторым операндом команды ARPL является регистр, содержащий значение селектора CS вызывающей процедуры.
Операция:
IF ( (RPL биты 0..1 в DEST) < (RPL биты 0..1 в SRC) )
THEN
ZF = 1;
(RPL биты 0..1 в DEST) = (RPL биты 0..1 в SRC);
ELSE
ZF = 0;
FI;
Особые ситуации защищенного режима:
#GP(0), если результат находится в сегменте, запрещенном для записи, а также если используется некорректный эффективный адрес операнда в памяти в сегментах CS, DS, ES, FS или GS.
#SS(0) при использовании некорректного эффективного адреса в сегменте SS.
#PF(Код ошибки), страничная ошибка.
#AC(0) при невыровненной ссылке в память при текущем уровне привилегий равном 3.
Особые ситуации режима реальной адресации:
#UD, команда ARPL не распознается в режиме реальной адресации.
Особые ситуации режима V86:
#UD, команда ARPL не распознается в режиме V86.
Все права защищены © Алексей Ровдо, 1994-2023. Перепечатка возможна только по согласованию с владельцем авторских прав. admin@club155.ru