Форматы данных и команды их обработки процессоров Pentium III, Pentium IVРефераты >> Программирование и компьютеры >> Форматы данных и команды их обработки процессоров Pentium III, Pentium IV
Синтаксис: MULPD rxmm1, rxmm2/m128
Машинный код: 66 0F 59 /r
Действие: умножить пары упакованных значений с плавающей точкой двойной точности источника и приемника по схеме: приемник[63-0]ßприемник[63-0]источник[63-0]; приемник[127-64]ßприемник[127-64]источник[127-64].
Исключения: SIMD (NE): #O, #U, #I, #Р, #D; PM: #GP(0): 37, 42; #SS(0): 13; #NM: 3; #PF(fault-code); #UD: 10-12, 15; #XM; RM: #GP: 13, 16; #NM: 3; #UD: 17-19, 22; #XM; VM: исключения реального режима; #PF(fault-code).
MULSD приемник, источник
MULSD (MULtiply Scalar Double-precision floating-point values) — умножение скалярных упакованных значений с плавающей точкой двойной точности.
Синтаксис: MULSD rxmm1, rxmm2/m64
Машинный код: F2 0F 59 /r
Действие: умножить младшие упакованные значения с плавающей точкой двойной точности источника и приемника по схеме: приемник[63-0]ßприемник[63-0] источник[63-0]; приемник[127-64] — не изменяется.
Исключения: SIMD (NE): #O, #U, #I, #Р, #D; PM: #GP(0): 37; #SS(0): 13; #NM: 3; #PF(fault-code); #UD: 10-12, 15; #XM; #AC(0)_cpl3; RM: #GP: 13; #NM: 3; #UD: 17-19, 22; #ХМ; VM: исключения реального режима; #PF(fault-code); #AC(0)_u.
ORPD приемник, источник
ORPD (bitwise logical OR 0F Double-precision floating-point values) — поразрядное логическое ИЛИ над упакованными значениями с плавающей точкой двойной точности.
Синтаксис: ORPD xmm1, xmm2/m128
Машинный код: 66 0F 56 /r
Действие: выполнить операцию поразрядного логического ИЛИ над парами упакованных значений с плавающей точкой двойной точности в приемнике и источнике по схеме: приемник[127-0]ßприемник[127-0]) побитное_ОR источник[127-0].
Исключения: PM: #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: исключения реального режима; #PF(fault-code).
PACKSSWB/PACKSSDW приемник, источник
PACKSSWB (Pack with Signed Saturation Words to Bytes) — упаковка со знаковым насыщением слов в байты. PACKSSDW (Pack with Signed Saturation Double Words to Words) — упаковка со знаковым насыщением двойных слов в слова.
Синтаксис и машинный код:
66 0F 63 /r PACKSSWB rxmm1, rxmm2/m128
66 0F 6В /r PACKSSDW rxmm1, rxmm2/m128
Действие: команды преобразуют шестнадцать/восемь элементов размером в слово/двойное слово из источника и приемника в шестнадцать/восемь элементов в операнде приемник размером в байт/слово (см. рисунок ниже). Если значение элемента источника превышает допустимое значения элемента приемника, то в элементе приемника формируется предельный результат в соответствии с принципом знакового насыщения:
• PACKSSWB — 07fh для положительных чисел и 080h для отрицательных;
• PACKSSDW — 07fffh для положительных чисел и 08000h для отрицательных.
Флаги: не изменяются.
Исключения: РМ: #GP(0): 2, 42; #SS(0): 1; #UD: 10, 12, 15; #NM: 3; #PF(fault-code); RM: #GP: 13,16; #UD: 17,19,22; #NM: 3; VM: исключения реального режима; #PF(fault-code).
PACKUSWB приемник, источник
PACKUSWB (PACK with Unsigned Saturation Description) — упаковка с беззнаковым насыщением слов в байты.
Синтаксис: PACKUSWB rxmm1, rxmm2/m128
Машинный код: 66 0F 67 /r
Действие: команда преобразует шестнадцать элементов из источника и приемника размером в слово в шестнадцать элементов в приемнике размером в байт (см. рисунок ниже). Если пересылаемое значение больше допустимого для поля приемника, то в нем формируется предельный результат в соответствии с принципом беззнакового насыщения, что соответствует значениям 0Ffh для положительных чисел и 00h для отрицательных.
Флаги: не изменяются.
Исключения: РМ: #GP(0): 2, 42; #SS(0): 1; #UD: 10, 12, 15; #NM: 3; #PF(fault-code); RM: #GP: 13,16; #UD: 17, 19,22; #NM: 3; VM: исключения реального режима; #PF(fault-code).
PADDB/PADDW/PADDD приемник, источник
PADDB (Packed ADDition Bytes) — сложение упакованных байт. PADDW (Packed ADDition Words) — сложение упакованных слов. PADDD (Packed ADDition Double words) — сложение упакованных двойных слов.
Синтаксис и машинный код:
66 0F FC /r PADDB rxmm1, rxmm2/m128
66 0F FD /r PADDW rxmm1, rxmm2/m128
66 0F FE /r PADDD rxmm1, rxmm2/m128
Действие: команда в зависимости от кода операции складывает соответствующие элементы операндов источника и приемника размером байт/слово/двойное слово. При возникновении переполнения результат формируется в соответствии с принципом циклического переполнения и помещается в операнд приемник.
Флаги: не изменяются.
Исключения: РМ: #GP(0): 2, 42; #SS(0): 1; #UD: 10, 12, 15; #NM: 3; #PF(fault-code); RM: #GP: 13,16; #UD: 17,19,22; #NM: 3; VM: исключения реального режима; #PF(fault-code).
PADDQ приемник, источник
PADDQ (ADD Packed Quadword integers description) — сложение учетверенных слов.
Синтаксис и машинный код:
0F D4 /r PADDQ rmmx1 ,rmmx2/m64
66 0F D4 /r PADDQ rxmm1,rxmm2/m128
Действие: сложить 64-битные целые значения в источнике и приемнике. Исходя из типа источника, возможны две схемы умножения:
• источник — ММХ-регистр или ячейка памяти m64: приемник[63-0]ßприем-ммк[63-0] + источник[63-0], приемник — ММХ-регистр;
• источник — ХММ-регистр или ячейка памяти: приемник[63-0]ßприемник[63-0] + источник[63-0]; приемник[127-64.]ßприемник[127-64] + источник[127-64].
В результате выполнения команды PADDQ регистр EFLAGS не отражает факта возникновения ситуации переполнения или переноса. Когда результат умножения слишком большой, чтобы быть представленным в 64-битном элементе приемника, то он "заворачивается" (перенос игнорируется). Для обнаружения подобных ситуаций программное обеспечение должно использовать другие методы.
Флаги: не изменяются.
Исключения: РМ: #GP(0): 2,42; #SS(0): 1; #UD: 10,12,15; #NM: 3; #PF(fault-code); RM: #GP: 13, 16; #UD: 17, 19, 22; #NM: 3; VM: исключения реального режима; #PF(fault-code).
PADDSB/PADDSW приемник, источник
PADDSB (Packed ADDition signed Bytes with Saturation) — сложение упакованных бант со знаковым насыщением. PADDSW (Packed ADDition signed Words with Saturation) — сложение упакованных слов со знаковым насыщением.
Синтаксис и машинный код:
66 0F EC /r PADDSB rxmm1, rxmm2/m128
66 0F ED /r PADDSW rxmm1, rxmm2/m128
Действие: команда в зависимости от кода операции складывает соответствующие элементы операндов источника и приемника размером байт/слово с учетом знака. При возникновении переполнения результат формируется в соответствии с принципом знакового насыщения:
• PADDSB — 07fh для положительных чисел и 080h для отрицательных;
• PADDSW — 07fffh для положительных чисел и 08000h для отрицательных.