Система команд x86 |
|
Программирование - Архитектура и система команд микропроцессоров x86 |
PSLLW
Влияние команды на флаги и форматы команды:
0F F1 /r |
PSLLW mm,mm/m64 |
Сдвинуть влево упакованные слова в mm на mm/m64 бит |
psllw mm3,[ecx] |
0F 71 /6 ib |
PSLLW mm,imm8 |
Сдвинуть влево упакованные слова в mm на imm8 бит |
psllw mm2,5 |
0F F2 /r |
PSLLD mm,mm/m64 |
Сдвинуть влево упакованные двойные слова в mm на mm/m64 бит |
pslld mm1,[ecx] |
0F 72 /6 ib |
PSLLD mm,imm8 |
Сдвинуть влево упакованные двойные слова в mm на imm8 бит |
pslld mm2,10 |
0F F3 /r |
PSLLQ mm,mm/m64 |
Сдвинуть влево учетверенное слово в mm на mm/m64 бит |
psllq mm5,[ebp] |
0F 73 /6 ib |
PSLLQ mm,imm8 |
Сдвинуть влево учетверенное слово в mm на imm8 бит |
psllq mm2,8 |
Описание:
Команда PSLL производит сдвиг влево битов первого операнда на число позиций, указанное во втором операнде. Результат сдвига записывается в операнд-назначение. Освобождающиеся младшие биты каждого элемента заполняются нулями. Если значение второго операнда больше 15 (для слов), 31 (для двойных слов) или 63 (для учетверенных слов), то результат обращается в нуль.
Операндом-назначением является MMX-регистр. Операндом-источником может быть MMX-регистр, 64-разрядный операнд в памяти или непосредственное 8-разрядное значение.
Команда PSLLW сдвигает каждое из четырех слов операнда-назначения влево на число позиций, указанное в операнде-источнике. Младшие биты каждого слова заполняются нулями.
Команда PSLLD сдвигает каждое из двух двойных слов операнда-назначения влево на число позиций, указанное в операнде-источнике. Младшие биты каждого двойного слова заполняются нулями.
Команда PSLLQ сдвигает учетверенное слово операнда-назначения влево на число позиций, указанное в операнде-источнике. Младшие биты заполняются нулями.
Операция:
IF Команда PSLLW
THEN
DEST(15..0) = DEST(15..0) << COUNT;
DEST(31..16) = DEST(31..16) << COUNT;
DEST(47..32) = DEST(47..32) << COUNT;
DEST(63..48) = DEST(63..48) << COUNT;
ELSE IF Команда PSLLD THEN
DEST(31..0) = DEST(31..0) << COUNT;
DEST(63..32) = DEST(63..32) << COUNT;
ELSE (* Команда PSLLQ *)
DEST = DEST << COUNT;
FI;
Особые ситуации защищенного режима:
#GP(0), если используется некорректный эффективный адрес операнда в памяти в сегментах CS, DS, ES, FS, GS или нулевой селектор.
#SS(0) при использовании некорректного эффективного адреса в сегменте SS.
#UD, если CRO.EM=1.
#NM, если CRO.TS=1.
#MF, если есть отложенные необработанные незамаскированные исключения FPU.
#PF(Код ошибки) при страничной ошибке.
#AC(0) при невыровненной ссылке в память при текущем уровне привилегий равном 3.
Особые ситуации режима реальной адресации:
#GP, если любая часть операнда находится вне пространства эффективных адресов в сегментах CS, DS, ES, FS или GS.
#UD, если CRO.EM=1.
#NM, если CRO.TS=1.
#MF, если есть отложенные необработанные незамаскированные исключения FPU.
Особые ситуации режима V86:
Такие же, как и в режиме реальной адресации.
#PF(Код ошибки) при страничной ошибке.
#AC(0) при невыровненной ссылке в память.
Все права защищены © Алексей Ровдо, 1994-2023. Перепечатка возможна только по согласованию с владельцем авторских прав. admin@club155.ru