Xreferat.com » Рефераты по информатике и программированию » Форматы данных и команды их обработки процессоров Pentium III, Pentium IV

Форматы данных и команды их обработки процессоров Pentium III, Pentium IV

#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 для отрицательных.

Результат помещается в операнд приемник.

Флаги: не изменяются.

Исключения: РМ: #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) — умножение упакованных беззнаковых слов с возвратом старших слов результата.

Синтаксис: 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

Действие: для каждой пары байт двух упакованных учетверенных слов операндов источник и приемник вычислить модуль разности, после чего сложить полученные модули. Результат записать в младшее слово каждого из двух упакованных учетверенных слов приемника, старшие три слова в упакованных учетверенных словах приемника обнулить. Принцип работы программы поясняет схема ниже.

Флаги: не изменяются.

Исключения: РМ: #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).


PSHUFD приемник, источник, маска

PSHUFD (SHUFfle Packed Doublewords) — копирование двойных слов из ХММ-операнда источник в ХММ-операнд приемник.

Синтаксис: PSHUFD xmm1, xmm2/m128, imm8

Машинный код: 66 0F 70 /r i8

Действие: на основе значения пар бит маски копировать двойные слова из источника в приемник. Каждая пара бит маски определяет номер слова источника для перемещения.в приемник следующим образом:

• маска[1:0]:

• 00 приемник[0...31]  источник[0...31],

• 01 приемник[0...31]  источник[32...63],

• 10 npueMHUK[0...31]  источник[64...95];

• 11 приемник[0...31]  источник[96..127];

• маска[3:2]:

• 00 приемник[32...63]  источник[0...31];

• 01 приемник[32...63]  источник[32...63];

• 10 приемник[32...63]  источник[64...95];

• 11 приемник[32...63]  источник[96..127];

• маска[5:4]:

• 00 приемник[64...95]  источник[0...31];

• 01 приемник[64...95]  источник[32...63],

• 10 приемиик[64...95]  источник[64...95];

• 11 приемник[64...95]  источник[96..127];

• маска[7:6]:

• 00 приемник[96..127]  источник[0...31];

• 01 приемник[96..127]  источник[32...63];

• 10 приемник[96..127]  источник[64...95];

• 11 приемник[96..127]  источник[96...127].

Если использовать один и тот же ХММ-регистр в качестве источника и приемника, то можно выполнять любые перестановки двойных слов в пределах одного ХММ-регистра, в том числе и инициализацию значением одного двойного слова других двойных слов. Работу команды PSHUFD поясняет следующая схема:

Флаги: не изменяются.

Исключения: РМ: #GP(0): 2, 42; #SS(0): 1; #UD: 10, 12, 15; #NM: 3; #PF(fault-code); RM: #GP: 13,16; #NM: 3; #UD: 17,19, 22; VM: исключения реального режима; #PF(fault-code).


PSHUFHW приемник, источник, маска

PSHUFHW (SHUFfle Packed High Words) — копирование слов из старшего учетверенного упакованного слова ХММ-операнда источник в старшее учетверенное упакованное слово ХММ-операнда приемник.

Синтаксис: PSHUFHW xmm1, xmm2/m128, imm8

Машинный код: F3 0F 70 /r i8

Действие: на основе значения пар бит маски копировать слова из старшего упакованного учетверенного слова источника в старшее учетверенное упакованное слово приемника. Каждая пара бит маски определяет номер слова источника для перемещения в приемник следующим образом:

• маска[1:0]:

• 00 приемник[64...79]  источник[64...79];

• 01 приемник[64...79]  источник[80...95];

• 10 приемник[64...79]  источник[96..111];

• 11 приемник[64...79]  источник[112...127];

• маска[3:2]:

• 00 приемник[80...95]  источник[64...79];

• 01 приемник[80...95]  источник[80...95];

• 10 приемник[80...95]  источник[96..111];

• 11 приемник[80...95]  источник[112..127];

• маска[5:4]:

• 00 приемник [96...111]  источгшк[64...79];

• 01 приемник [96...111]  источник[80...95];

• 10 приемник [96...111]  источпик[96...111];

• 11 приемник [96...111]  источник[112..127];

• маска[7:6]:

• 00 приемник[112...127]  источник[64...79];

• 01 приемник[112...127]  источник[80...95];

• 10 приемник[112...127]  источник[96..111];

• 11 приемник[112...127}  источник[112..127].

Если использовать один и тот же ХММ-регистр в качестве источника и приемника, то можно выполнять любые перестановки слов в пределах старшего учетверенного слова одного ХММ-регистра, в том числе и инициализацию значением одного слова других слов. Работу команды PSHUFHW поясняет следующая схема.

Флаги: не изменяются.

Исключения: РМ: #GP(0): 2, 42; #SS(0): 1; #UD: 10, 12, 15; #NM: 3; #PF(fault-codc); RM: #GP: 13,16; #UD: 17,19,22; #NM: 3; VM: исключения реального режима; #PF(fanlt-code).


PSHUFLW приемник, источник, маска

PSHUFLW (SHUFfle Packed Low Words) — копирование слов из младшего учетверенного упакованного слова ХММ-онераида источник в младшее учетверенное упакованное слово ХММ-онеранда приемник.

Синтаксис: PSHUFLW rxmm1, rxmm2/m128, imm8

Машинный код: F2 0F 70 /r i8

Действие: на основе значения пар бит маски копировать слова из младшего учетверенного слова источника в младшее учетверенное слово приемника. Каждая пара бит маски определяет номер слова источника для перемещения в приемник следующим образом:

• маска[1:0]:

• 00 приемник[00..15]  источник[00..15];

• 01 приемник[00..15]  источник[16..31];

• 10 приемник[00..15]  источник[32..47];

• 11 приемник[00..15]  источник[48..63];

• маска[3:2]:

• 00 приемник[16...31]  источник[00..15];

• 01 приемник[16...31]  источник[16...31];

• 10 приемник[16...31]  источгшк[32..47];

• 11 приемник[16...31]  источник[48...63];

• маска[5:4]:

• 00 приемник[32..47]  источник[00..15];

• 01 приемник[32..47]  источник[16..31];

• 10 приемник[32..47]  источник[32..47];

• 11 приемник[32..47]  источник[48..63];

• маска[7:6]:

• 00 приемник[47...63]  источник[00..15];

• 01 приемник[47...63]  источник[16..31];

• 10 приемник[47...63]  истспник[32..47];

• 11 приемник[47...63]  источник[48..63].

Если использовать один и тот же ХММ-регистр в качестве источника и приемника, то можно выполнять любые перестановки слов в пределах младшего учетверенного слова одного ХММ-регистра, в том числе и инициализацию значением одного слова других слов. Работу команды PSHUFLW поясняет схема, показанная далее.

Флаги: не изменяются.

Исключения: РМ: #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).


PSLLDQ приемник, количество сдвигов

PSLLDQ (Shift Double Quadword Left Logical) — логический сдвиг влево приемника на число байт количество _сдвигов.

Синтаксис: PSLLDQ xmm1, imm8

Машинный код: 66 0F 73 /7 i8

Действие: сдвиг влево приемника на число байт, указанных непосредственным операндом количество _сдвигов. Освобождаемые слева младшие байты обнуляются. Если значение, указанное операндом количество _сдвигов, больше чем 15, операнд приемник обнуляется.

Флаги: не изменяются.

Исключения: #UD: 10,12,15; #NM: 3; RM: исключения защищенного режима; VM: исключения защищенного режима.


PSLLW/PSLLD/PSLLQ приемник, количество_сдвигов

PSLLW/PSLLD/PSLLQ (SHIFt packed data Left Logical) — сдвиг влево логический приемника на число бит количество_сдвигов.

Синтаксис и машинный код:

66 0F F1 /r PSLLW rxmrn-l, rxmm2/m128

66 0F 71 /6 ib PSLLW rxmm1, imm8

66 0F F2 /r

Если Вам нужна помощь с академической работой (курсовая, контрольная, диплом, реферат и т.д.), обратитесь к нашим специалистам. Более 90000 специалистов готовы Вам помочь.
Бесплатные корректировки и доработки. Бесплатная оценка стоимости работы.

Поможем написать работу на аналогичную тему

Получить выполненную работу или консультацию специалиста по вашему учебному проекту
Нужна помощь в написании работы?
Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Пишем статьи РИНЦ, ВАК, Scopus. Помогаем в публикации. Правки вносим бесплатно.

Похожие рефераты: