
7. Логические операции ммх
Команда |
Назначение |
Процессор |
PAND приемник, источник |
Логическое И |
ММХ ММХ ММХ |
Команда выполняет побитовое «логическое И» над источником (регистр ММХ или переменная) и приемником (регистр ММХ) и сохраняет результат в приемнике.
Каждый бит результата устанавливается в 1, если соответствующие биты в обоих операндах равны 1, в противном случае бит сбрасывается в 0.
Команда |
Назначение |
Процессор |
PANDN приемник, источник |
Логическое НЕ-И (штрих Шеффера) |
ММХ |
Выполняет побитовое «логическое НЕ» (то есть инверсию битов) над приемником (регистр ММХ) и затем побитовое «логическое И» над приемником и источником (регистр ММХ или переменная). Результат сохраняется в приемнике. Каждый бит результата устанавливается в 1, только если соответствующий бит источника был равен 1, а приемника - 0, иначе бит сбрасывается в 0. Эта дорическая операция называется также штрихом Шеффера.
Команда |
Назначение |
Процессор |
POR приемник, источник |
Логическое ИЛИ |
ММХ |
Выполняет побитовое «логическое ИЛИ» над источником (регистр ММХ или переменная) и приемником (регистр ММХ) и сохраняет результат в приемнике. Каждый бит результата сбрасывается в 0, если соответствующие биты в обоих операндах равны 0, в противном случае бит устанавливается в 1.
Команда |
Назначение |
Процессор |
PXOR приемник, источник |
Логическое исключающее ИЛИ |
ММХ |
Выполняет побитовое «логическое исключающее ИЛИ» над источником (регистр ММХ или переменная) и приемником (регистр ММХ) и сохраняет результат в приемнике. Каждый бит результата устанавливается в 1, если соответствующие биты в обоих операндах равны, иначе бит сбрасывается в 0.
8. Сдвиговые операции ММХ
Команда |
Назначение |
Процессор |
PSLLW приемник, источник PSLLD приемник, источник PSLLQ приемник, источник |
Логический сдвиг влево Логический сдвиг влево Логический сдвиг влево |
ММХ ММХ ММХ |
Команды сдвигают влево биты в каждом элементе (в словах - для PSLLW, в двойных словах - для PSLLD, во всем регистре - для PSLLQ) приемника (регистр ММХ) на число битов, указанное в источнике (8-битное число, регистр ММХ или переменная). При сдвиге младшие биты заполняются нулями, так что, например, команды
обнуляют регистр ММ0.
Команда |
Назначение |
Процессор |
PSRLW приемник, источник PSRLD приемник, источник PSRLQ приемник, источник |
Логический сдвиг вправо Логический сдвиг вправо Логический сдвиг вправо |
ММХ ММХ ММХ |
Команды сдвигают вправо биты в каждом элементе (в словах - для PSRLW, в двойных словах - для PSRLD, во всем регистре - для PSRLQ) приемника (регистр ММХ) на число битов, указанное в источнике (8-битное число, регистр ММХ или переменная). При сдвиге старшие биты заполняются нулями.
Команда |
Назначение |
Процессор |
PSRAW приемник, источник PSRAD приемник, источник |
Арифметический сдвиг вправо Арифметический сдвиг вправо |
ММХ ММХ |
Команды сдвигают вправо биты в каждом элементе (в словах - для PSRAW и в двойных словах - для PSRAD) приемника (регистр ММХ) на число битов, указанное в источнике (8-битное число, регистр ММХ или переменная). При сдвиге самый старший (знаковый) бит используется для заполнения пустеющих старших битов, так что фактически происходит знаковое деление на 2 в степени, равной содержимому источника.
9. Команды управления состоянием ММХ
Команда |
Назначение |
Процессор |
EMMS |
Освободить регистры ММХ |
ММХ |
Если выполнялись какие-нибудь команды ММХ (кроме EMMS), все регистры FPU помечаются как занятые (в регистре TW). Команда EMMS помечает все регистры FPU как пустые для того, чтобы после завершения работы с ММХ можно было передать управление процедуре, использующей FPU.