Форматы данных и команды их обработки процессоров Pentium III, Pentium IV

Информация - Компьютеры, программирование

Другие материалы по предмету Компьютеры, программирование

P: 13,16; #NM: 3; #UD: 17,19,22; VM: исключения реального режима; #PF(fault-code).

PSUBUSB/PSUBUSW приемник, источник

PSUBUSB (Packed Subtraction with Unsigned Saturation Bytes) вычитание упакованных байт с беззнаковым насыщением. PSUBUSW (Packed Subtraction with Unsigned Saturation words) вычитание упакованных слов с беззнаковым насыщением.

Синтаксис и машинный код:

66 0F D8 /r PSUBUSB xmm1, xmm2/m128

66 0F D9 /r PSUBUSW xmm1, xmm2/m128

Действие: вычесть без учета знака элементы операндов источника и приемника размером байт/слово в зависимости от кода операции. При возникновении переполнения результат формируется в соответствии с принципом беззнакового насыщения:

PSUBUSB 00h для результатов вычитания меньших нуля;

PSUBUSW 0000h для результатов вычитания меньших нуля.

Результат помещается в операнд приемник.

Флаги: не изменяются.

Исключения: РМ: #GP(0): 2, 42; #SS(0): 1; #UD: 10, 12, 15; #NM: 3; #PF(fault-code); RM: #GP: 13,16; #NM: 3; #UD: 17,19,22; VM: исключения реального режима; #PF(fault-code).

PUNPCKHBW/PUNPCKHWD/PUNPCKHDQ/ PUNPCKHQDQ приемник, источник

PUNPCKHBW/PUNPCKHWD/PUNPCKHDQ/PUNPCKHQDQ (UNPaCK High Data) распаковка старших упакованных байт (слов, двойных слов, учетверенных слов) в слова (двойные слова, учетверенные слова, двойное учетверенное слово).

Синтаксис и машинный код:

66 0F 68 /r PUNPCKHBW rxmm1, rxmm2/m128

66 0F 69 /r PUNPCKHWD rxmm1, rxmm2/m128

66 0F 6A /r PUNPCKHDQ rxmm1, rxmm2/m128

66 0F 6D /r PUNPCKHQDQ rxmm1, rxmm2/m128

Действие: команды PUNPCKHBW, PUNPCKHWD, PUNPCKHDQ и PUNPCKHQDQ производят размещение iередованием элементов из операндов источник и приемник согласно следующей схеме:

PUNPCKHBW:

приемник[70]приемник[7164]; приемник[7164]приемник[10396];

приемник[158]источник[7164]; приемник[7972]источник[10396];

приемник[2316]приемник[7972]; приемник[8780]приемник[111104];

приемник[3124]источник[7972]; приемник[9588] источник[111104];

приемник[3932]приемник[8780]; приемник[10396]приемник[119112];

приемник[4740]источник[8780]; приемник[111104]источник[119112];

приемник[5548]приемник[9588], приемник[119112]приемник[127120];

приемник[6356]источник[9588]; приемник[127120]источник[127120];

PUNPCKHWD:

приемник[150]приемник[7964]; приемник[7964]приемник[11196];

приемник[3116]источник[7964]; приемник[9580]источник[11196];

приемник[4732]приемник[9580]; приемник[11196]привмник[127112];

приемник[63А8]источник[9580]; приемник[127112]источник[127112];

PUNPCKHDQ:

приемник[310]приемник[9564]; приемник[9564]приемник[12796];

приемник[6332]источник[9564]; приемник[12796]источник[12796];

PUNPCKHQDQ:

приемник[630]приемник[12764]; приемник[12764]исоточник[12764];

Флаги: не изменяются.

Исключения: РМ: #GP(0): 2,42; #MF; #NM: 3; #PF(fault-code); #SS(0): 1; #UD: 10; #AC(0)_cpl3; RM: #GP: 13, 16; #MF; #NM: 3; #UD: 17; VM: исключения реального режима; #PF(fault-code).

PUNPCKLBW/PUNPCKLWD/PUNPCKLDQ/ PUNPCKLQDQ приемник, источник

PUNPCKLBW/PUNPCKLWD/PUNPCKLDQ/PUNPCKLQDQ (UNPaCK Low Data) распаковка младших упакованных байт (слов, двойных слов, учетверенных слов) в слова (двойные слова, учетверенные слова, двойное учетверенное слово).

Синтаксис и машинный код:

66 0F 60 /r PUNPCKLBW rxmm1, rxmm2/m128

66 0F 61 /r PUNPCKLWD rxmm1, rxmm2/m128

66 0F 62 /r PUNPCKLDQ rxmm1, rxmm2/m128

66 0F 6C /r PUNPCKLQDQ rxmm1, rxmm2/m128

Действие: команды PUNPCKLBW, PUNPCKLWD, PUNPCKLDQ и PUNPCKLQDQ производят размещение iередованием элементов из операндов источник и приемник согласно следующей схеме:

PUNPCKLBW:

приемник[70]приемник[70]; приемник[7164]приемник[3932];

приемник[158]источник[70]; приемник[7972]источник[3932];

приемник[2316]приемник[158]; приемник[8780]приемник[4740];

приемник[3124]источник[158]; приемник[9588] источник[4740];

приемник[3932]приемник[2316]; приемник[10396]приемник[5548];

приемник[4740]источник[2316]; приемник[111104]источник[5548];

приемник[5548]приемник[3124], приемник[119112]приемник[6356];

приемник[6356]источник[3124]; приемник[127120]источник[6356];

PUNPCKLWD:

приемник[150]приемник[150]; приемник[7964]приемник[4732];

приемник[3116]источник[150]; приемник[9580]источник[4732];

приемник[4732]приемник[3116]; приемник[11196]привмник[6348];

приемник[63А8]источник[3116]; приемник[127112]источник[6348];

PUNPCKLDQ:

приемник[310]приемник[310]; приемник[9564]приемник[6332];

приемник[6332]источник[310]; приемник[12796]источник[6332];

PUNPCKLQDQ:

приемник[630]приемник[630]; приемник[12764]исоточник[630];

Флаги: не изменяются.

Исключения: РМ: #GP(0): 2,42; #MF; #NM: 3; #PF(fault-code); #SS(0): 1; #UD: 10;

#AC(0)_cpl3; RM: #GP: 13, 16; #MF; #NM: 3; #UD: 17; VM: исключения реального режима; #PF(fault-cocle); #AC(0)_u.

PXOR приемник, источник

PXOR (Packed logical Exclusive OR) упакованное логическое исключающее ИЛИ.

Синтаксис: PXOR xmm1, xmm2/m128

Машинный код: 66 0F EF /r

Действие: команда производит побитовую операцию логическое исключающее ИЛИ над всеми битами операндов источник и приемник. Результат помещается в операнд приемник. Флаги: не изменяются.

Исключения: РМ: #GP(0): 2, 42; #SS(0): 1; #UD: 10, 12, 15; #NM: 3; #PF(fault-code); RM: #GP: 13,16; #NM: 3; #UD: 17,19,22; VM: исключения реального режима; #PF(fault-code).

SHUFPD приемник, источник, маска

SHUFPD (Shuffle Packed Double-Precision Floating-Point Values Description) перестановка упакованных значений с плавающей точкой двойной точности.

Синтаксис: SHUFPD xmm1, xmm2/m128, imm8

Машинный код: 66 0F С6 /r i8

Действие: переместить упакованные значения с плавающей точкой двойной точности из приемника и источника в приемник в соответствии со значением непосредственного операнда маска. Биты маски определяют номера упакованных значений с плавающей точкой двойной точности в источнике или приемнике, которые будут перемещены в приемник следующим образом:

маска.0 = 0: приемник[630] приемник[630];

маска.0 = 1: приемник[630] приемник[12764];

маска.1 = 0: приемник[12764] источник[630];

маска.1 = 1: приемник[12764] источник[12764].

Для перестановки в пределах одного регистра можно использовать один и тот же регистр ХММ в качестве источника и приемника.

Исключения: РМ: #GP(0): 37,42; #NM: 3; #PF(fault-code); #SS(0): 13; #UD: 10-12, 15; #XM; RM: #GP: 13,16; #NM: 3; #UD: 17-19,22; #XM; VM: исключения ре?/p>