Смекни!
smekni.com

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

Действие: команда в зависимости от кода операции складывает соответствующие элементы операндов источника и приемника размером байт/слово с учетом знака. При возникновении переполнения результат формируется в соответствии с принципом знакового насыщения:

• 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