October 17 2017 05:06:59
Навигация
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации .

Забыли пароль?
Запросите новый здесь.
Команды PACKSS
ПРОЦЕССОРЫ ОБЩЕГО НАЗНАЧЕНИЯ И СИСТЕМЫ НА ИХ ОСНОВЕ

Команда PMOVMSKB формирует байт (8-битовую маску) из старших (знаковых) разрядов b7 каждого байта Bi, хранящегося в ММХ-регистре mm. Эта маска размещается в младших разрядах регистра общего назначения r32, а его старшие разряды заполняются нулями (рис. 2.26).

img014

Команды PACKSS[WB,DW] и PACKUSWB выполняют операцию, которая называется упаковкой данных. Исходные элементы преобразуются в элементы, имеющие в два раза меньший размер, чем исходные (разрядность элементов уменьшается вдвое). При данном преобразовании используется принцип насыщения. Если значение исходного элемента больше верхнего предела или меньше нижнего предела, установленных для формата результата операции (см. табл. 2.40), то в качестве результирующего элемента в ММХ-регистр заносится значение соответствующего предела. Выполнение этих команд иллюстрируется на рис. 2.27.

img015

Команда PACKSSWB (рис. 2.27, а) упаковывает знаковые слова в знаковые байты. Если значение какого-либо исходного слова больше 007Fh (+127), то значение соответствующего байта результата будет 7Fh; если значение слова меньше FF80h (- 128), то значение байта результата 80h (- 128). Аналогичную операцию реализует команда PACKUSWB, которая упаковывает знаковые слова в беззнаковые байты. Отличие от предыдущей операции состоит только в определении пределов для беззнаковых байтов результата согласно табл. 2.40: если значение исходного слова больше 00FFh (255), то значение соответствующего байта результата FFh (255), если значение слова меньше 0000h (0), то значение байта результата 00h (0).

Команда PACKSSDW (рис. 2.27, б) упаковывает знаковые двойные слова в знаковые слова. Если значение исходного двойного слова больше 00007FFFh (+32767), то значение соответствующего слова результата будет 7FFFh; если значение исходного слова меньше FFFF8000h (-32768), то значение слова результата 8000h (- 32768).

Команды PUNPCKH[BW,WD,DQ] и PUNPCKL[BW,WD,DQ] производит операцию, которая называется распаковкой данных. Эти команды объединяют старшие (команды PUNPCKH) или младшие (команды PUNPCKL) половины исходных операндов, хранящихся в регистре mm и регистре или ячейке памяти mm/m64, в один результирующий операнд, который размещается в регистре mm. При этом элементы исходных операндов перемешиваются, располагаясь через один (рис. 2.28). Дополнительный суффикс в мнемокодах этих команд определяет, какие половины исходных операндов объединяются: старшие (мнемокоды с суффиксом Н) или младшие (мнемокоды с суффиксом L). Суффиксы BW (распаковка байтов), WD (распаковка слов), DQ (распаковка двойных слов) задают форматы представления результата и исходных операндов.

Комментарии
Нет комментариев.
Добавить комментарий
Пожалуйста, залогиньтесь для добавления комментария.
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, авторизуйтесьили зарегистрируйтесь для голосования.

Нет данных для оценки.

Время загрузки: 0.02 секунд 2,254,360 уникальных посетителей