Форматы данных и команды их обработки процессоров Pentium III, Pentium IVРефераты >> Программирование и компьютеры >> Форматы данных и команды их обработки процессоров Pentium III, Pentium IV
Синтаксис: SUBSS rxmm1, rxmm2/m32
Машинный код: 11110011:00001111:01011100:mod rxmm r/m
Действие: команда вычитает значения младшей пары вещественных чисел в формате ХММ.
Исключения: NE: #O, #U, #I, #P, #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; #XM; VM: исключения реального режима; #АС(0); #PF(fault-code).
UCOMISS приемник, источник
UCOMISS (Unordered Scalar Single-fp COMpare and set eflags) — неупорядоченное скалярное сравнение значений в формате ХММ с установкой флагов в EFLAGS.
Синтаксис: UCOMISS rxmm1, rxmm2/m32
Машинный код: 00001111:00101110:mod rxmm1 r/m
Действие: сравнение пары вещественных элементов в коротком формате, расположенных в младшем двойном слове операндов в формате ХММ. В результате выполнения команды формируются значения флагов ZF, PF и CF, а флаги 0F, SF и AF устанавливаются в 0 (см. ниже). В процессе работы команда распознает специальные значения qNaN и sNaN. При возникновении незамаскированных исключений расширения ХММ регистр EFLAGS не изменяется.
Соотношение операндов |
Значение флагов |
Приемник>источник |
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 |
Исключения: 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; #XM; VM: исключения реального режима; #АС(0); #PF(fault-code).
UNPCKHPS приемник, источник
UNPCKHPS (Unpack High Packed Single-precision float-point data) — чередование верхних упакованных значений в формате ХММ.
Синтаксис: UNPCKHPS rxmm1, rxmm2/m128
Машинный код: 00001111:00010101:mod rxmm1 r/m
Действие: перемещение путем чередования двух старших двойных слова приемника и источника. Младшие двойные слова приемника и источника игнорируются. Схема выполнения команды UNPCKHPS показана на следующем рисунке.
Исключения: 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).
UNPCKLPS приемник, источник
UNPCKLPS (Unpack Low Packed Single-precision float-point data) — чередование нижних упакованных значений в формате ХММ.
Синтаксис: UNPCKLPS rxmm1, rxmm2/m128
Машинный код: 00001111:00010100:mod rxmm1 r/m
Действие: перемещение путем чередования двух младших двойных слова приемника и источника. Старшие двойные слова приемника и источника игнорируются. Схема работы команды UNPCKLPS показана на следующем рисунке.
Исключения: 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).
XORPS приемник, источник
XORPS (bit-wise logical XOR for Packed Single-precision float-point) — поразрядное логическое ИСКЛЮЧАЮЩЕЕ ИЛИ над упакованными значениями в формате ХММ.
Синтаксис: XORPS rxmm1, rxmm2/m128
Машинный код: 00001111:01010111 :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: 17, 19, 20; VM: исключения реального режима;
#PF(fault-code).
6.2. Команды блока XMM (SSE2 – Pentium 4)
ADDPD приемник, источник
ADDPD (ADD Packed Double-precision floating-point values) — сложение упакованных значений с плавающей точкой двойной точности.
Синтаксис: ADDPD rxmm1, rxmm2/m128
Машинный код: 66 0F 58 /r
Действие: сложить пары упакованных значении с плавающей точкой двойной точности источника и приемника (аналогично команде ADDPS) и сохранить результат сложения в соответствующих упакованных значениях с плавающей точкой двойной точности приемника.
Исключения: SIMD (NE): #O, #U, #I, #Р, #D; PM: #GP(0): 37, 42; #NM: 3; #ХМ; #PF(fault-code); #SS(0): 13; #UD: 10-12,15; RM: #GP: 13,16; #NM: 3; #UD: 17-19, 22; #XM; VM: исключения реального режима; #PF(fault-code).
ADDSD приемник, источник
ADDSD (ADD Scalar Double-precision floating-point values) — сложение скалярных упакованных значений с плавающей точкой двойной точности.
Синтаксис: ADDSD rxmm1, rxmm2/m64
Машинный код: F2 0F 58 /r
Действие: сложить младшие упакованные значения с плавающей точкой двойной точности источника и приемника (аналогично команде ADDSS) и сохранить результат сложения в младшем упакованном значении с плавающей точкой двойной точности приемника.
Исключения: SIMD (NE): #O, #U, #I, #Р, #D; PM: #GP(0): 37; #PF(fault-code); #SS(0): 13; #NM: 3; #XM; #UD: 10, 11,12, 15; #AC(0)_cpl3; RM: #GP: 13; #NM: 3; #UD: 17, 18, 19, 22; #XM; VM: исключения реального режима; #PF(fault-code); #AC(0)_u.
ANDPD приемник, источник
ANDPD (bitwise logical AND 0F Packed Double-precision floating-point values) — поразрядное логическое И над упакованными значениями с плавающей точкой двойной точности.
Синтаксис: ANDPD xmm1, xmm2/m128
Машинный код: 66 0F 54 /r
Действие: выполнить поразрядное логические И над двумя упакованными значениями с плавающей точкой двойной точности по схеме: приемник[127-0]ß приемник[127-0] пoбитнoe_AND источник[127-0].
Исключения: PM: #GP(0): 37, 42; #SS(0): 13; #NM: 3; #XM; #PF(fault-code);
#UD: 10-12,15; RM: #GP: 13,16; #NM: 3; #UD: 17-19, 22; #XM; VM: исключения реального режима; #PF(fault-code).
ANDNPD приемник, источник
ANDNPD (bitwise logical AND NOT 0F Packed Double-precision floating-point values) — поразрядное логическое И-НЕ над упакованными значениями с плавающей точкой двойной точности. Синтаксис: ANDNPD xmm1, xmm2/m128
Машинный код: 66 0F 55 /r
Действие: выполнить операцию поразрядного логического И-НЕ над парами упакованных значений с плавающей точкой двойной точности в приемнике и источнике по схеме: приемник[127-0]ß((NОТприемник[127-0]) пoбитнoe_AND источник[127-0]).
Исключения: PM: #GP(0): 37, 42; #SS(0): 13; #NM: 3; #PF(fault-code); #UD: 10, 11,12, 15; #XM; RM: #GP: 13, 16; #NM: 3; #UD: 17, 18,19, 22; #XM; VM: исключения реального режима; #PF(fault-code).
CLFLUSH адрес_байта
CLFLUSH (FLUSH Cache Line) — сброс на диск строки кэша, содержащей адрес_байта.
Синтаксис: CLFLUSH m8
Машинный код: 0F AE /7
Действие: объявить недействительной строку кэша, которая содержит линейный адрес адрес_байта на всех уровнях иерархии кэшей данных и команд процессора. Если на одном из уровней иерархии кэшей строка "грязная" (противоречит содержимому памяти), то перед объявлением ее недействительной она записывается в память.