Смекни!
smekni.com

Форматы данных и команды их обработки процессоров Pentium III, Pentium IV (стр. 8 из 18)

Исключения: NE: #O, #U,. #I, #P, #D; PM: #АС: 4; #GP(0): 37; #NM: 3; #PF(fault-code); #SS(0): 13; #UD: 10-13; #XM; RM: #GP: 13; #NM: 3; #UD: 17-20; #XM; VM: исключения реального режима; #АС(0); #PF(fault-code).

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

ANDNPS (bit-wise logical AND Not for Packed Single-precision float-point) — поразрядное логическое И-НЕ над упакованными значениями в формате ХММ.

Синтаксис: ANDNPS rxmm1, rxmm2/m128

Машинный код: 00001111:01010101:mod rxmm1 r/m

Действие: инвертировать биты операнда приемник, над каждой парой битов операндов приемник (после инвертирования) и источник выполнить операцию логического И.

Исключения: PM: #GP(0): 37; #NM: 3; #PF(fault-code); #SS(0): 13; #UD: 10,12,13; RM: #GP: 13; #NM: 3; #UD: 7; VM: исключения реального режима; #PF(fault-code); #UD: 16, 17.

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

ANDPS (bit-wise logical AND for Packed Single-precision float-point) — поразрядное логическое И над каждой парой бит операндов источник и приемник.

Синтаксис: ANDPS rxmm1, rxmm2/m128

Машинный код: 00001111:01010100: mod rxmm 1 r/m

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

CMPPS приемник, источник, условие

CMPPS (CoMPare Packed Single-precision float-point) — сравнение упакованных значений в формате ХММ

Синтаксис: CMPPS rxmm1, rxmm2/m128, i8

Машинный код: 00001111:11000010: mod rxmm1 r/m: i8

Действие: условие, в соответствии с которым производится сравнение каждой пары элементов операндов приемник и источник, задается явно в виде непосредственного операнда (см. ниже). В результате сравнения в приемнике формируются единичные (если условие выполнено) или нулевые элементы (если условие не выполнено).

Усло-вие Описание условия Отношение Эмуляция Код маски i8 Результат, если операнд NaN Исключение #I, если операнд qNAN/sNAN
Eq Equal (равно) xmm1== xmm2 000b False Нет
Lt less-than (меньше чем) xmm1<< xmm2 001 b False Да
Le less-than - or-equal (меньше чем или равно) xmm1<<= xmm2 010b False Да
greater than (больше чем) xmm1>> xmm2 Перестанов-ка с сохране­нием, lt False Да
greater- than-or- equal (больше чем или равно) xmm1>>= xmm2 Перестанов-ка с сохране­- нием, le False Да
Unord Unordered (одно из чисел QNAN) xmm1 ? xmm2 011b True Нет
Neq not-equal (не равно) !(xmm1== xmm2) 100b True Нет
Nit not-less- than (не меньше чем) !(xmm1 << xmm2) 101b True Да
NIe not-less- than-or- equal (не меньше чем или равно) !(xmm1<<= xmm2) 110b True Да
not-greater- than(не больше чем) !(xmm1>> xmm2) Перестанов-ка с сохране­нием, nlt True Да
not-greater-than-or- equal (не больше чем или равно) !(xmm1>>= xmm2) Перестанов-ка с сохране­нием, nle True Да
Ord Ordered (числа неQNAN) !(xmm1 ?xmm2) 111b False Нет

Исключения: 1; NE: #I, #D; PM: #GP(0): 37; #NM: 3; #PF(fault-code); #SS(0): 13; #UD: 10-13; #XM; RM: #GP: 13; #NM: 3; #VD: 17-20; #XM; VM: исключения реального режима; #PF(fault-code).

CMPSS приемник, источник, условие

CMPSS (CoMPare Scalar Single-precision float-point) — скалярное сравнение значений в формате ХММ.

Синтаксис: CMPSS rxmm1, rxmm2/m32, i8

Машинный код: 11110011:00001111:11000010:mod rxmm1 r/m: i8

Действие: для пары значений операндов приемник и источник выполняется сравнение, в результате которого формируются единичные (если условие выполнено) или нулевые элементы (если условие не выполнено). Значение источника может быть расположено в 32-битной ячейке памяти или в младшем двойном слове регистра ХММ. Значение приемника расположено в младшем двойном слове другого регистра ХММ.

Возможные значения условий приведены в описании команды CMPPS.

Исключения: NE: #I, #D; PM: #AC(0); #GP(0): 37; #NM: 3; #PF(fault-code); #SS(0): 13; #UD: 10-13; #XM; RM: #GP: 13; #NM: 3; #UD: 17-20; #ХМ; VM: исключения реального режима; #АС(0); #PF(fault-code).

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

COMISS (COMpare ordered Scalar Single-precision float-point COMpare and Set EFLAGS) — скалярное упорядоченное сравнение значений в формате ХММ с установкой EFLAGS.

Синтаксис: COMISS rxmm1, rxmm2/m32

Машинный код: 00001111:00101111 :mod rxmm1 r/m

Действие: команда сравнивает пару значений операндов приемник и источник, в результате чего устанавливаются флаги в регистре EFLAGS, как показано ниже.

Значение источника может быть расположено в 32-битной ячейке памяти или младшем двойном слове регистра ХММ. Значение приемника расположено в младшем двойном слове другого регистра ХММ.

Соотношение операндов Значение флагов
Приемник>источник 0F=SF=AF=ZF=PF=CF=0
Приемник<источник 0F=SF=AF=ZF=PF=0; CF=1
Приемник=источник 0F=SF=AF=PF=CF=0; ZF=1
Приемник или источник=qNaN или sNaN 0F=SF=AF=0; ZF=PF=CF=1

При возникновении незамаскированных исключений значение EFLAGS не изменяется. Исключения: NE: #I, #D; PM: #AC(0); #GP(0): 37; #NM: 3; #PF(fault-code); #SS(0): 13; #UD: 10-13; #XM; RM: #GP: 13; #NM: 3; #UD: 17-20; #ХМ; VM: исключения реального режима; #АС(0); #PF(fault-code).

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

CVTPI2PS (Conversion Two Packed signed Int32 to Packed Single-precision float-point) — преобразование двух упакованных 32-битных целых в два упакованных вещественных значения.

Синтаксис: CVTP12PS rxmm1, rmmx2/m64

Машинный код: 00001111:00101010:mod rxmm1 r/m

Действие: алгоритм работы команды показан на рисунке ниже.

В случае, когда не удается выполнить точное преобразование, результат округляется в соответствии с полем MXCSR.RC.

Исключения: NE: #Р; РМ: #АС(0); #GP(0): 37; #MF; #NM: 3; #PF(fault-code);

#SS(0): 13; #UD: 10-13; #XM; RM: #AC; #GP: 13; #MF; #NM: 3; #UD: 17-20; #XM; VM: исключения реального режима; #АС(0); #PF(fault-code).

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

CVTPS2PI (ConVersion Two Packed Single-precision float-point to Packed signed Int32) — преобразование двух вещественных целых в два упакованных 32-битных целых.

Синтаксис: CVTPS2PI rmmx1, rmmx2/m128

Машинный код: 00001111:00101101 :mod rmmx1 r/m

Действие: алгоритм работы команды показан на рисунке ниже.

Если преобразованный результат больше, чем максимально возможное целочисленное 32-битное значение, то возвращается значение 80000000h. В случае, когда не удается выполнить точное преобразование, значение округляется в соответствии с полем MXCSR.RC.

Исключения: NE: #I, #Р; РМ: #АС(0); #GP(0): 37; #MF; #NM: 3; #PF(fault-code); #SS(0): 13; #UD: 10-13; #XM; RM: #GP: 13; #MF; #NM: 3; #UD: 17-20; #XM; VM: исключения реального режима; #АС(0); #PF(fault-code).

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

CVTSI2SS (ConVerT Scalar signed Int32 to Scalar Single-precision float-point) -скалярное преобразование знакового 32-битного целого в вещественное значение.

Синтаксис: CVTS12SS rxmm, r32/m32

Машинный код: 11110011:00001111:00101010:mod rxmm r/m

Действие: алгоритм работы команды показан на рисунке ниже.

В случае когда не удается выполнить точное преобразование, значение округляется в соответствии с полем MXCSR.RC.

Исключения: NE: #Р; РМ: #АС(0); #GP(0): 37; #NM: 3; #PF(fault-code); #SS(0): 13; #UD: 10-13; #XM; RM: #GP: 13; #NM: 3; #UD: 17-20; #ХМ; VM: исключения реального режима; #АС(0); #PF(fault-code).

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

CVTSS2SI (ConVerT Scalar Single-precision float-point to Scalar signed Int32) -скалярное преобразование вещественного целого в 32-битное знаковое целое.

Синтаксис: CVTSS2SI r32,rxmm/m128

Машинный код: 11110011:00001111:00101101 :mod r32 r/m

Действие: значение источника хранится в младшем двойном слове регистра ХММ или в 128-битной ячейке памяти. Приемник — один из 32-битных регистров.

Алгоритм работы команды показан на рисунке ниже.

Если преобразованный результат больше, чем максимально возможное целочисленное 32-битное значение, то возвращается значение 80000000h. В случае, когда не удается выполнить точное преобразование, значение округляется в соответствии с полем MXCSR.RC.

Исключения: NE: #I, #Р; РМ: #АС(0); #GP(0): 37; #NM: 3; #PF(fault-code); #SS(0): 13; #UD: 10-13; #XM; RM: #GP: 13; #NM: 3; #UD: 17-20; #XM; VM: исключения реального режима; #АС(0); #PF(fault-code).

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

CVTTPS2PI (ConVerT Truncate two Packed Single-precision float-point to Packed signed Int32) — преобразование (путем отбрасывания дробной части) двух вещественных целых в два упакованных 32-битных целых значения.

Синтаксис: CVTTPS2PI rmmx,rxmm/m128

Машинный код: 00001111:00101100:mod rmmx r/m

Действие: алгоритм работы команды показан на рисунке ниже.

Если преобразованный результат больше, чем максимально возможное целочисленное 32-битное значение, то будет возвращено значение 80000000h.

Исключения: NE: ffl,#P; РМ: #АС(0); #GP(0): 37; #MF; #NM: 3; #PF(fault-code); #SS(0): 13; #UD: 10-13; #XM; RM: #GP: 13; #MF; #NM: 3; #UD: 17-20; #XM; VM: исключения реального режима; #АС(0); #PF(fault-code).

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

CVTTSS2SI (ConVerT Truncate Scalar Single-precision float-point to Scalar signed Int32) — скалярное преобразование (путем отбрасывания дробной части) вещественного целого в знаковое целое.

Синтаксис: CVTTSS2SI r32,rxmm/m128

Машинный код: 11110011:00001111:00101100:mod r32 r/m

Действие: значение источника хранится в младшем двойном слове регистра ХММ или в 128-битной ячейке памяти. Приемник — один из 32-битных регистров. Алгоритм работы команды показан на рисунке ниже.

Если преобразованный результат больше, чем максимально возможное целочисленное 32-битное значение, то будет возвращено значение 80000000h.

Исключения: NE: #I,#Р; РМ: #АС(0); #GP(0): 37; #NM: 3; #PF(fault-code); #SS(0): 13; #UD: 10-13; #XM; RM: #GP: 13; #NM: 3; #UD: 17-20; #ХМ; VM: исключения реального режима; #АС(0); #PF(fault-code).

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

DIVPS (DIVide Packed Single-precision float-point) — деление упакованных значений в формате ХММ согласно следующей схеме.

Синтаксис: DIVPS rxmm1,rxmm2/m128

Машинный код: 00001111:01011110:mod rxmm r/m