Научная литература
booksshare.net -> Добавить материал -> Физика -> Александров Е.К. -> "Микропроцессорные системы" -> 80

Микропроцессорные системы - Александров Е.К.

Александров Е.К., Грушвицкий Р.И., Купрянов М.С., Мартынов О.Е. Микропроцессорные системы — Спб.: Политехника, 2002. — 935 c.
ISBN 5-7325-0516-4
Скачать (прямая ссылка): mikroprocessorniesistemi2002.djvu
Предыдущая << 1 .. 74 75 76 77 78 79 < 80 > 81 82 83 84 85 86 .. 528 >> Следующая

байты без знака mm(WO) -"mm(BO) mm(W1) -" mm(B1) mm{W2) -" mm(B2) mm(W3)
-> mm(B3) mm/m64(W0) -"mm(B4) mm/m64(W1) -" mm(B5) mm/m64(W2) -" mm(B6)
mm/m64(W3) -" mm(B7)
PUNPCKHBW тт,тт/т64 mm(B4) -" mm(BO) mm/m64(B4) -" mm(B1) mm(B5) ->
mm(B2) mm/m64(B5) -> mm(B3) mm(B6) -"mm(B4) mm/m64(B6) -" mm(B5) mm(B7) -
"mm(B6) mm/m64(B7) -> mm(B7)
PUNPCKHWD тт,тт/т64 PUNPCKHDQ тт,тт/т64 mm(W2) -> mm(WO) mm/m64(W2) ->
mm(W1) mm(W3) -" mm(W2) mm/m64(W3) -"mm(W3) mm(D1) -" mm(DO) mm/m64(D1) -
" mm(DO)
PUNPCKLBW тт,тт/т64 mm/m64(B3) ->mm(B7) mm(B3) -" mm(B6) mm/m64(B2) -
"mm(B5) mm(B2) -? mm(B4) mm/m64(B1) -" mm(B3) mm(B1) -> mm(B2) mm/m64(B0)
-> mm(B1) mm(BO) -> mm(BO)
СИСТЕМА КОМАНД: ОПЕРАЦИИ ММХ
Продолжение табл. 2.41
Синтаксис команды Операция
PUNPCKLWD mm,mm/m64 PUNPCKLDQ mm,mm/m64 mm/m64(W1) -"mm(W3) mm(W1) -
"mm(W2) mm/m64(W0) -> mm(W1) mm(WO) -"mm(WO) mm/m64(D0) -> mm(D1) mm(DO)
-"mm(DO)
PSHUFW mm,mm/m64,irnm8 mm/m64[W(im8[1..0])] -"mm(WO) mm/m64[W(im8[3..2])]
-> mm(W1) mm/m64[W(im8[5.,4])] -> mm(W2) mm/m64[W(im8[7..6])] -> mm(W3)
Команда MOVQ производит пересылку 64-разрядного операнда - счетверенного
слова mm(Q) - между двумя MMX-регистрами или между MMX-регистром и
памятью. Эта команда не выполняет перенос данных между MMX-регистром и
регистром общего назначения. Команда MOVD производит пересылку 32-
разрядного операнда - двойного слова mm(DO) -между MMX-регистром (младший
элемент) и памятью или регистром общего назначения. Если операндом-
приемником является MMX-регистр, то в его старшую половину загружается
нулевое значение. Данная команда не может использоваться для передачи
данных между двумя ММХ-регистрами.
Команды PEXTRW и PINSRW производят пересылки 16-разрядных элементов -
слов mm(Wi) - между MMX-регистром и регистром общего назначения или
памятью. Команда PEXTRW пересылает любой элемент (слово) из ММХ-регистра
в младшие разряды Ы 5-0 регистра общего назначения г32. В старшие разряды
631-16 этого регистра загружается нулевое значение. Команда PINSRW
выполняет обратную операцию, пересылая слово из младших разрядов Ы5-0
регистра общего назначения или 16-разрядной ячейки памяти с адресом т16
на место заданного элемента mm(Wi) в MMX-регистр. Остальные три элемента
(слова) в MMX-регистре остаются без изменения. Номер i пересылаемого или
замещаемого элемента в MMX-регистре задается двумя младшими битами
непосредственного операнда im8.
Команда PMOVMSKB формирует байт (8-битовую маску) из старших (знаковых)
разрядов Ь7 каждого байта Bi, хранящегося в MMX-регистре mm. Эта маска
размещается в младших разрядах регистра общего назначения г32, а его
старшие разряды заполняются нулями (рис. 2.26).
Команды PACKSS[WB,DW] и PACKUSWB выполняют операцию, которая называется
упаковкой данных. Исходные элементы преобразуются в элементы, имеющие в
два раза меньший размер, чем исходные (разрядность элементов уменьшается
вдвое). При данном преобразовании используется принцип насыщения. Если
значение исходного элемента больше верх-
PMOVMSKB r32, mm
63 56 56 48 47 40 39 32 31 24 23 16 15
8 7 _0_
mm [J
г32
31 ~~24 23 16 15 8 7 0
Рис. 2.26. Выполнение команды PMOVMSKB*
ПРОЦЕССОРЫ ОБЩЕГО НАЗНАЧЕНИЯ И СИСТЕМЫ НА ИХ ОСНОВЕ
него предела или меньше нижнего предела, установленных для формата
результата операции (см. табл. 2.40), то в качестве результирующего
элемента в MMX-регистр заносится значение соответствующего предела.
Выполнение этих команд иллюстрируется на рис. 2.27.
Команда PACKSSWB (рис. 2.27, а) упаковывает знаковые слова в знаковые
байты. Если значение какого-либо исходного слова больше 007Fh (+127), то
значение соответствующего байта результата будет 7Fh; если значение слова
меньше FF80h (- 128), то значение байта результата 80h (- 128).
Аналогичную операцию реализует команда PACKUSWB, которая упаковывает
знаковые слова в беззнаковые байты. Отличие от предыдущей операции
состоит только в определении пределов для беззнаковых байтов результата
согласно табл. 2.40: если значение исходного слова больше OOFFh (255), то
значение соответствующего байта результата FFh (255), если значение слова
меньше OOOOh (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). Дополнительный суффикс в мнемокодах этих команд определяет,
Предыдущая << 1 .. 74 75 76 77 78 79 < 80 > 81 82 83 84 85 86 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

Есть, чем поделиться? Отправьте
материал
нам
Авторские права © 2009 BooksShare.
Все права защищены.
Rambler's Top100

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed