Форматы данных и команды их обработки процессоров Pentium III, Pentium IV
исключения реального режима; #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 для
отрицательных.
Флаги: не изменяются.
[pic]
Исключения: РМ: #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 для отрицательных.
[pic]
Флаги: не изменяются.
Исключения: РМ: #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 для отрицательных.
Результат помещается в операнд приемник.
Флаги: не изменяются.
Исключения: РМ: #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).
PADDUSB/PADDUSW приемник, источник
PADDUSB (Packed ADDition unsigned Bytes with Unsigned Saturation) —
сложение упакованных байт с беззнаковым насыщением. PADDUSW (Packed
ADDition unsigned Words with Unsigned Saturation) — сложение упакованных
слов с беззнаковым насыщением.
Синтаксис и машинный код:
66 0F DC /r PADDUSB rxmm1, rxmm2/m128
66 0F DD /r PADDUSW rxmm1, rxmm2/m128
Действие: команда в зависимости от кода операции складывает без учета
знака соответствующие элементы операндов источника и приемника размером
байт/слово. При возникновении переполнения результат формируется в
приемнике в соответствии с принципом беззнакового насыщения:
• PADDUSB – 0ffh и 00h для результатов сложения соответственно больших
или меньших максимально/минимально представимых значений в беззнаковом
байте;
• PADDUSW – 0ffffh и 0000h для результатов сложения соответственно
больших или меньших максимально/минимально представимых значений в
беззнаковом слове.
Результат помещается в операнд приемник.
Флаги: не изменяются.
Исключения: РМ: #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).
PAND приемник, источник
PAND (Packed logical AND) — упакованное логическое И.
Синтаксис: PAND rxmm1, rxmm2/m128
Машинный код: 66 0F DB /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).
PANDN приемник, источник
PANDN (Packed logical AND Not) — упакованное логическое И-НЕ.
Синтаксис: PANDN rxmm1, rxmm2/m128
Машинный код: 66 0F DF /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).
PAUSE
PAUSE (Spin Loop Hint) — улучшить выполнение цикла ожидания-занятости.
Синтаксис: PAUSE
Машинный код: F3 90
Действие: улучшить выполнение цикла ожидания-занятости (spin-wait
loops). При выполнении подобных циклов процессор Pentium 4 испытывает
проблему при завершении цикла, обнаруживая возможное нарушение доступа к
памяти. Команда PAUSE подсказывает процессору, что данная кодовая
последовательность — цикл ожидания-занятости. Процессор использует эту
подсказку, чтобы игнорировать возможную ситуацию нарушения доступа к памяти
в большинстве случаев. Это улучшает работу процессора вплоть до
значительного снижения его энергопотребления. По этой причине рекомендуется
включать команду PAUSE во все циклы ожидания-занятости.
Исключения: отсутствуют.
PAVGB/PAVGW приемник, источник
PAVGB/PAVGW (Packed Average) — упакованное среднее.
Синтаксис и машинный код:
66 0F E0 /r PAVGB rxmm1, rxmm2/m128
66 0F E3 /r PAVGW rxmm1, rxmm2/m128
Действие: выполнить параллельное сложение байт/слов источника и
приемника и сдвинуть результат сложения на один разряд вправо (деление на
2).
Флаги: не изменяются.
Исключения: РМ: #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).
PCMPEQB/PCMPEQW/PCMPEQD приемник, источник
PCMPEQB (Packed CoMPare for Equal Byte) — сравнение на равенство
упакованных байт. PCMPEQW (Packed CoMPare for Equal Word) — сравнение на
равенство упакованных слов. PCMPEQD (Packed CoMPare for Equal Double word)
— сравнение на равенство упакованных двойных слов.
Синтаксис и машинный код:
66 0F 74 /r PCMPEQB rxmm1, rxmm2/m128
66 0F 75 /r PCMPEQW rxmm1, rxmm2/m128
66 0F 76 /r PCMPEQD 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).
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) —
умножение упакованных беззнаковых слов с возвратом старших слов результата.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9
|