MMX-команды упаковки преобразуют длинные элементы данных (16- и 32-разрядные слова) в более короткие. Если исходное значение "не помещается" в коротком элементе данных, то происходит "насыщение" - результатом считается граничное значение допустимого диапазона выходного типа данных.
Команды распаковки попарно объединяют элементы данных из обоих операндов в более длинные элементы выходного операнда. Этими командами можно пользоваться для повышения числа значащих разрядов при вычислениях.
Для получения информации о конкретной команде щелкните мышкой на названии команды:

Команды packss
Команды packss преобразуют длинные элементы данных (16- и 32-разрядные слова со знаком) в более короткие (байты или 16-разрядные слова со знаком). Если исходное значение было за пределами допустимого диапазона для выходного типа данных, то результатом упаковки считается ближайшее граничное значение диапазона.
Входной операнд может находиться в MMX-регистре или в памяти;
выходной операнд должен находиться в MMX-регистре.
Поддерживаются команды:
packsswb, packssdw.

back Возврат к началу темы

Команда packuswb
Команда packuswb преобразует 16-разрядные слова со знаком из обоих операндов в байты без знака и записывает их в выходной операнд.

Если исходное слово со знаком было больше FFh, результатом преобразования считается FFh. Если исходное слово со знаком отрицательно, результатом преобразования считается 00h.

Входной операнд может находиться в MMX-регистре или в памяти;
выходной операнд должен находиться в MMX-регистре.

back Возврат к началу темы

Команды punpckh
Команды punpckh попарно объединяют исходные элементы данных (байты, 16- или 32-разрядные слова), находившиеся в старших 32 разрядах обоих операндов. Полученные в результате более длинные элементы данных записываются в выходной операнд. Исходные значения младших разрядов операндов на результат не влияют.

Входной операнд может находиться в MMX-регистре или в памяти;
выходной операнд должен находиться в MMX-регистре.
Поддерживаются команды:
punpckhbw, punpckhwd, punpckhdq.

back Возврат к началу темы

Команды punpckl
Команды punpckl попарно объединяют исходные элементы данных (байты, 16- или 32-разрядные слова), находившиеся в младших 32 разрядах обоих операндов. Полученные в результате более длинные элементы данных записываются в выходной операнд. Исходные значения старших разрядов операндов на результат не влияют.

Входной операнд может находиться в MMX-регистре или в памяти;
выходной операнд должен находиться в MMX-регистре.
Поддерживаются команды:
punpcklbw, punpcklwd, punpckldq.

back Возврат к началу темы