PIII-PIV (664942), страница 11
Текст из файла (страница 11)
Флаги: не изменяются.
Исключения: РМ: #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).
PCMPGTB/PCMPGTW/PCMPGTD приемник, источник
PCMPGTB (Packed CoMPare for Greater Than Byte) — сравнение по условию "больше чем" упакованных байт. PCMPGTW (Packed CoMPare for Greater Than Word) — сравнение по условию "больше чем" упакованных слов. PCMPGTD (Packed CoMPare for Greater Than Double word) — сравнение но условию "больше чем" упакованных двойных слов.
Синтаксис и машинный код:
66 0F 64 /r PCMPGTB rxmm1, rxmm2/m128
66 0F 65 /r PCMPGTW rxmm1, rxmm2/m128
66 0F 66 /r PCMPGTD rxmm1, rxmm2/m128
Действие: команда производит сравнение по условию "больше чем" элементов операндов источника и приемника и формирует элементы результата по следующему принципу:
• если элемент приемника больше соответствующего элемента источника, то элемент результата в зависимости от применяемой команды устанавливается равным одному из следующих значений: 0ffh, 0ffffh, 0ffffffffh;
• если элемент приемника не больше соответствующего элемента источника, то элемент результата в зависимости от применяемой команды устанавливается равным одному из следующих значений: 00h, 0000h, 00000000h.
Результат помещается в операнд приемник.
Флаги: не изменяются.
Исключения: РМ: #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).
PEXTRW приемник, источник, маска
PEXTRW (Extract Word) — извлечение 16-битного слова из ХММ-рстистра по маске.
Синтаксис: PEXTRW r32, rxmm, imm8
Машинный код: 66 0F C5 /r i8
Действие: команда выделяет четыре младших бита непосредственного операнда маска. Их значение определяет номер слова в операнде источник (ХММ-регистр). Данное слово перемещается в младшие 16 бит операнда приемник, представляющего собой 32-разрядный регистр общего назначения. Старшие 16 бит этого регистра обнуляются.
Флаги: не изменяются.
Исключения: РМ: #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).
PINSRW приемник, источник, маска
PINSRW (Insert Word) — вставка 16-битного слова в регистр ММХ.
Синтаксис: PINSRW rxmm, r32/m16, imm8
Машинный код: 66 0F C4 /r i8
Действие: команда выделяет четыре младших бита непосредственного операнда маска. Их значение определяет номер слова в операнде приемник, который представляет собой ХММ-регистр. В это слово будут перемещены младшие 16 бит операнда источник, который представляет собой 32-разрядный регистр общего назначения или 16-битную ячейку памяти.
Флаги: не изменяются.
Исключения: РМ: #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).
PMADDWD приемник, источник
PMADDWD (Packed Multiply and ADD Word to Double word) — упакованное знаковое умножение знаковых слов операндов источник и приемник с последующим сложением промежуточных результатов в формате двойного слова.
Синтаксис: PMADDWD rxmm1, rxmm2/m128
Машинный код: 66 0F F5 /r
Действие: работа команды аналогична команде блока MMX PMADDWD, за исключением того, что вместо ММХ-регистров используются ХММ-регистры и разрядность операндов в памяти повышается до 128 бит.
Флаги: не изменяются.
Исключения: РМ: #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).
PMAXSW приемник, источник
PMAXSW (MAXimum 0F Packed Signed Word integers) — возврат максимальных упакованных знаковых слов.
Синтаксис: PMAXSW rxmmi, rxmm2/m128
Машинный код: 66 0F ЕЕ /r
Действие: команда определяет наибольшее слово для каждой пары упакованных слов источника и приемника с учетом знака и заменяет им соответствующие слова приемника.
Флаги: не изменяются.
Исключения: РМ: #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).
PMAXUB приемник, источник
PMAXUB (MAXimum 0F Packed Unsigned Byte integers) — возврат максимальных упакованных беззнаковых байт.
Синтаксис: PMAXUB rxmmi, rxmm2/m128
Машинный код: 66 0F DE /r
Действие: для каждой пары байтовых элементов источника и приемника определить наибольший без учета знака и заменить им соответствующим элемент приемника.
Флаги: не изменяются.
Исключения: РМ: #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: исключения реального режима; ftPF(fault-code).
PMINSW приемник, источник
PMINSW (MINimum of Packed Signed Word integers) — возврат минимальных упакованных знаковых слов.
Синтаксис: PMINSW rxmmi, rxmm2/m128
Машинный код: 66 0F EA /r
Действие: для каждой пары элементов (размером 16 бит) источника и приемника команда определяет наименьший с учетом знака и заменяет им соответствующий элемент приемника.
Флаги: не изменяются.
Исключения: РМ: #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).
PMINUB приемник, источник
PMINUB (MINimum of Packed Unsigned Byte integers) — возврат минимальных упакованных беззнаковых бант.
Синтаксис: PMINUB rxmmi, rxmm2/m128
Машинный код: 66 0F DA /r
Действие: для каждой пары байтовых элементов источника и приемника команда определяет наименьший без учета знака и заменяет им соответствующий элемент
приемника.
Флаги: не изменяются.
Исключения: РМ: #GP(0): 2, 42; #SS(0): 1; #UD: 10, 12, 15; #NM: 3; #PF(lault-code); RM: #GP: 13,16; #UD: 17,19, 22; #NM: 3; VM: исключения реального режима; #PF(fault-code).
PMOVMSKB приемник, источник
PMOVMSKB (MOVe Byte MaSK) — перемещение байтовой маски в целочисленный регистр.
Синтаксис: PMOVMSKB r32, rxmm
Машинный код: 66 0F D7 /r
Действие: команда извлекает и копирует значения старшего бита каждого из упакованных байт ХММ-регистра в младшие 16 бит 32-битного целочисленного регистра общего назначения. Остальные разряды целочисленного регистра обнуляются.
Флаги: не изменяются.
Исключения: РМ: #UD: 10, 12,15; #NM: 3; RM: исключения защищенного режима; VM: исключения защищенного режима.
PMULHUW приемник, источник
PMULHUW (MULtiply Packed Unsigned integers and store High result) — умножение упакованных беззнаковых слов с возвратом старших слов результата.
Синтаксис: PMULHUW rxmm1, rxmm2/m128
Машинный код: 66 0F E4 /r
Действие: команда производит умножение упакованных слов источника и приемника без учета знака и формирует элементы результата в соответствии с приведенной ниже схемой. Как видно из нее, в результате умножения слов операндов источник и приемник получаются промежуточные результаты размером 32 бита.
Далее старшее слово (16 бит) из каждого промежуточного результата умножения исходных элементов помещается в 16-битный элемент окончательного результата. Результат помещается в операнд приемник.
Флаги: не изменяются.
Исключения: РМ: #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).
PMULHW приемник, источник
PMULHW (MULtiply Packed signed integers and store High result) — упакованное знаковое умножение слов с возвратом старшего слова результата.
Синтаксис: PMULHW rxmm1, rxmm2/m128
Машинный код: 66 0F E5 /r
Действие: команда производит умножение упакованных слов источника и приемника с учетом знака и формирует элементы результата в соответствии со схемой, приведенной при описании команды PMULHUW.
Флаги: не изменяются.
Исключения: РМ: #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).
PMULLW приемник, источник
PMULLW (MULtiply Packed signed integers and store Low result) — упакованное знаковое умножение слов с возвратом младшего слова результата.
Синтаксис: PMULLW xmm 1, xmm2/m 128
Машинный код: 66 0F D5 /r
Действие: команда производит умножение с учетом знака упакованных слов источника и приемника и формирует элементы результата в соответствии с приведенной ниже схемой.
Как видно из этой схемы, в результате умножения слов источника и приемника получаются промежуточные результаты размером 32 бита. Далее младшее слово (16 бит) из каждого 32-битного элемента промежуточного результата умножения исходных элементов помещается в 16-битный элемент результата (операнд приемник). Флаги: не изменяются.
Исключения: РМ: #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).
PMULUDQ приемник, источник
PMULUDQ, (MULtiply Packed Unsigned Doubleword integers description) — умножение 32-битных целых значений без учета знака и сохранение результата в ХММ-регистре.
Синтаксис и машинный код:
0F F4 /r PMULUDQ rmmx1, rmmx2/m64
66 0F F4 /r PMULUDQ rxmm1, rxmm2/m128
Действие: умножить 32-битные целые значения со знаком в источнике и приемнике. Исходя из типа источника, возможны две схемы умножения:
• источник — ММХ-регистр или ячейка памяти m64: приемник[63-0] приемник[?А-0] источник[31-0];
• источник — ХММ-регистр или ячейка памяти: приемник[63-0}приемник[31-0] источник[31-0]; приемник[127-64]приемник[95-64]
источник[95-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).
POR приемник, источник
POR (bitwise logical OR) — упакованное логическое ИЛИ.
Синтаксис: POR rxmm1, rxmm2/m128
Машинный код: 66 0F ЕВ /r
Действие: команда производит побитовую операцию логическое ИЛИ над всеми битами операндов источника и приемника. Результат помешается в операнд приемник.
Флаги: не изменяются.
Исключения: РМ: #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).
PSADBW приемник, источник
PSADBW (Compute Sum 0F Absolute Differences) — суммарная разница значений нар беззнаковых упакованных байт.
Синтаксис: PSADBW rxmm1, rxmm2/m128
Машинный код: 66 0F F6 /r
Действие: для каждой пары байт двух упакованных учетверенных слов операндов источник и приемник вычислить модуль разности, после чего сложить полученные модули. Результат записать в младшее слово каждого из двух упакованных учетверенных слов приемника, старшие три слова в упакованных учетверенных словах приемника обнулить. Принцип работы программы поясняет схема ниже.
Флаги: не изменяются.