МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Форматы данных и команды их обработки процессоров Pentium III, Pentium IV

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

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

    Действие: команда производит умножение упакованных слов источника и

    приемника без учета знака и формирует элементы результата в соответствии с

    приведенной ниже схемой. Как видно из нее, в результате умножения слов

    операндов источник и приемник получаются промежуточные результаты размером

    32 бита.

    Далее старшее слово (16 бит) из каждого промежуточного результата

    умножения исходных элементов помещается в 16-битный элемент окончательного

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

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

    [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).

    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-битный элемент

    результата (операнд приемник). Флаги: не изменяются.

    [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).

    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] [pic] источник[31-0];

    • источник — ХММ-регистр или ячейка памяти: приемник[63-0}(приемник[31-

    0] [pic]источник[31-0]; приемник[127-64](приемник[95-64][pic]источник[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

    Действие: для каждой пары байт двух упакованных учетверенных слов

    операндов источник и приемник вычислить модуль разности, после чего сложить

    полученные модули. Результат записать в младшее слово каждого из двух

    упакованных учетверенных слов приемника, старшие три слова в упакованных

    учетверенных словах приемника обнулить. Принцип работы программы поясняет

    схема ниже.

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

    [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).

    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 поясняет следующая схема:

    [pic]

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

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

    следующая схема.

    [pic]

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

    Исключения: РМ: #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 поясняет схема,

    показанная далее.

    [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).

    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 PSLLD rxmm1, rxmm2/m128

    66 0F 72 /6 ib PSLLD rxmm1, imm8

    66 0F F3 /r PSLLQ rxmm1, rxmm2/m128

    66 0F 73 /6 ib PSLLQ rxmm1, imm8

    Действие: сдвиг упакованных элементов приемника (слов, двойных слов,

    учетверенных слов) влево на число бит, указанных операндом количество

    _сдвигов. Освобождаемые слева биты замещаются нулевыми. Если значение,

    указанное операндом количество _сдвигов, больше чем 15 (для слов), 31 (для

    двойных слов) или 63 (для учетверенных слов), то значение операнда приемник

    устанавливается равным 0. Операнд количество _сдвигов может быть либо ХММ-

    регистром (128-разрядной ячейкой памяти), либо непосредственным 8-разрядным

    операндом. Флаги: не изменяются.

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

    PSRAW/PSRAD приемник, количество_сдвигов

    PSRAW/PSRAD (SHIFt Packed data Right Arithmetic) — сдвиг вправо

    арифметический приемника на число бит количество_сдвигов.

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

    66 0F Е1 /r PSRAWxmmI, xmm2/m128

    66 0F 71/4 i8 PSRAW xmm1, imm8

    66 0F E2 /r PSRAD xmm1, xmm2/m128

    66 0F 72 /4 i8 PSRAD xmm1, imm8

    Действие: сдвиг упакованных элементов приемника (слов, двойных слов)

    вправо на число бит, указанных операндом количество_сдвигов. Освобождаемые

    справа биты заполняются значением знакового разряда элемента данных. Если

    значение, указанное операндом количество_сдвигов, больше чем 15 (для слов)

    или 31 (для двойных слов), то каждый элемент данных приемника заполняется

    начальным значением знакового разряда элемента. Операнд количество _сдвигов

    может быть либо ХММ-регистром (128-разрядной ячейкой памяти), либо

    непосредственным 8-разрядным операндом.

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

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

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

    PSRLDQ (Shift Double Quadword Right Logical) — сдвиг вправо приемника

    на число байт количество_сдвигов.

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

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

    Действие: сдвиг вправо приемника на число байт, указанных

    непосредственным операндом количество_сдвигов. Освобождаемые справа младшие

    байты обнуляются. Если значение, указанное операндом количество_сдвигов,

    больше чем 15, операнд приемник обнуляется.

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

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

    режима; VM: исключения защищенного режима.

    PSRLW/PSRLD/PSRLQ приемник, количество_сдвигов

    PSRLW/PSRLD/PSRLQ (Shift Packed Data Right Logical) — сдвиг вправо

    логический приемника на число бит количество _сдвигов.

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

    66 0F D1 /r PSRLW rxmm1, rxmm2/m128

    66 0F 71 /2 i8 PSRLW rxmm1, imm8

    66 0FD2/r PSRLD rxmm1, rxmm2/m128

    66 0F 72 /2 i8 PSRLD rxmm1, imm8

    66 0F D3/r PSRLQ rxmm1, rxmm2/m128

    66 0F 73/2 i8 PSRLQ rxmm1, imm8

    Действие: сдвиг упакованных элементов приемника (слов, двойных слов,

    учетверенных слов) вправо на число бит, указанных операндом количество

    _сдвшов. Освобождаемые справа биты замещаются нулевыми. Если значение,

    указанное операндом количество_сдвиюв, больше чем 15 (для слов), 31 (для

    двойных слов) или 63 (для учетверенных слов), то значение операнда приемник

    устанавливается равным 0. Операнд количество_сдвшов может быть либо ХММ-

    регистром (128-разрядной ячейкой памяти), либо непосредственным 8-разрядным

    операндом. Флаги: не изменяются.

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

    PSUBB/PSUBW/PSUBD приемник, источник

    PSUBB (Packed Subtraction Bytes) — вычитание упакованных байт. PSUBW

    (Packed Subtraction Words) — вычитание упакованных слов. PSUBD (Packed

    Subtraction Double words) — вычитание упакованных двойных слов.

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

    66 0F F8 /r PSUBB rxmm1, rxmm2/m128

    66 0F F9 /r PSUBW rxmm1, rxmm2/m128

    66 0F FA /r PSUBD rxmm1, rxmm2/m128

    Действие: команда вычитает из элементов источника элементы приемника

    размером байт/слова/двойное слово в зависимости от кода операции. При

    переполнении результат формируется в соответствии с принципом циклического

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

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

    Исключения: РМ: #GP(0): 2, 42; #SS(0): 1; #UD: 10, 12, 15; #NM: 3;

    #PF(iau!t-code); RM: #GP: 13,16; ^NM: 3; #UD: 17,19,22; VM: исключения

    реального режима; #PF(fault-code).

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

    PSUBQ (SUBtract Packed Qyadword integers description) — вычитание

    учетверенных слов.

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

    0F FB /r PSUBQ rmmx1, rmmx2/m64

    66 0F FB /r PSUBQ rxmm1, rxmm2/m128

    Действие: вычесть 64-битные целые значения в источнике и приемнике.

    Исходя из типа источника, возможны две схемы умножения:

    • источник — ММХ-регистр или ячейка памяти m64: приемник[63-0]

    (приемник[63-0] — источник[63-0], приемник — ММХ-регистр;

    • источник — ХММ-регистр или ячейка памяти: приемник[63-0](приемник[63-

    0] — источник[63-0}; приемник[127-64](приемник[127-6А] — нсточник[127-64].

    В результате выполнения команды PSUBQ регистр EFLAGS не отражает факта

    возникновения ситуации переполнения или переноса. Когда результат умножения

    слишком большой, чтобы быть представленным в 64-битном элементе приемника,

    то он "заворачивается" (перенос игнорируется). Для обнаружения подобных

    ситуаций программное обеспечение должно использовать другие методы.

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

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

    PSUBSB/PSUBSW приемник, источник

    PSUBSB (Packed Subtraction with signed Saturation Bytes) — вычитание

    упакованных байт со знаковым насыщением. PSUBSW (Packed Subtraction with

    signed Saturation Words) — вычитание упакованных слов со знаковым

    насыщением.

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

    66 0F E8 /r PSUBSB rxmm1, rxmm2/m128

    66 0F E9 /r PSUBSW rxmm1, rxmm2/m128

    Действие: вычесть элементы источника и приемника размером байт/слово в

    зависимости от кода операции. Вычитание элементов производится с учетом их

    знака. При возникновении переполнения результат формируется в соответствии

    с принципом знакового насыщения:

    • PSUBSB — 07fh для положительных чисел и 080h для отрицательных;

    • PSUBSW — 07fffh для положительных чисел и 08000h для отрицательных.

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

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

    PSUBUSB/PSUBUSW приемник, источник

    PSUBUSB (Packed Subtraction with Unsigned Saturation Bytes) —

    вычитание упакованных байт с беззнаковым насыщением. PSUBUSW (Packed

    Subtraction with Unsigned Saturation Words) — вычитание упакованных слов с

    беззнаковым насыщением.

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

    66 0F D8 /r PSUBUSB xmm1, xmm2/m128

    66 0F D9 /r PSUBUSW xmm1, xmm2/m128

    Действие: вычесть без учета знака элементы операндов источника и

    приемника размером байт/слово в зависимости от кода операции. При

    возникновении переполнения результат формируется в соответствии с принципом

    беззнакового насыщения:

    • PSUBUSB — 00h для результатов вычитания меньших нуля;

    • PSUBUSW – 0000h для результатов вычитания меньших нуля.

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

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

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

    PUNPCKHBW/PUNPCKHWD/PUNPCKHDQ/ PUNPCKHQDQ приемник, источник

    PUNPCKHBW/PUNPCKHWD/PUNPCKHDQ/PUNPCKHQDQ (UNPaCK High Data) —

    распаковка старших упакованных байт (слов, двойных слов, учетверенных слов)

    в слова (двойные слова, учетверенные слова, двойное учетверенное слово).

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

    66 0F 68 /r PUNPCKHBW rxmm1, rxmm2/m128

    66 0F 69 /r PUNPCKHWD rxmm1, rxmm2/m128

    66 0F 6A /r PUNPCKHDQ rxmm1, rxmm2/m128

    66 0F 6D /r PUNPCKHQDQ rxmm1, rxmm2/m128

    Действие: команды PUNPCKHBW, PUNPCKHWD, PUNPCKHDQ и PUNPCKHQDQ

    производят размещение с чередованием элементов из операндов источник и

    приемник согласно следующей схеме:

    PUNPCKHBW:

    приемник[7–0](приемник[71–64]; приемник[71–64](приемник[103–96];

    приемник[15–8](источник[71–64]; приемник[79–72](источник[103–96];

    приемник[23–16](приемник[79–72]; приемник[87–80](приемник[111–104];

    приемник[31–24](источник[79–72]; приемник[95–88]( источник[111–104];

    приемник[39–32](приемник[87–80]; приемник[103–96](приемник[119–112];

    приемник[47–40](источник[87–80]; приемник[111–104](источник[119–112];

    приемник[55–48](приемник[95–88], приемник[119–112](приемник[127–120];

    приемник[63–56](источник[95–88]; приемник[127–120](источник[127–120];

    PUNPCKHWD:

    приемник[15–0](приемник[79–64]; приемник[79–64](приемник[111–96];

    приемник[31–16](источник[79–64]; приемник[95–80](источник[111–96];

    приемник[47–32](приемник[95–80]; приемник[111–96](привмник[127–112];

    приемник[63–А8](источник[95–80]; приемник[127–112](источник[127–112];

    PUNPCKHDQ:

    приемник[31–0](приемник[95–64]; приемник[95–64](приемник[127–96];

    приемник[63–32](источник[95–64]; приемник[127–96](источник[127–96];

    PUNPCKHQDQ:

    приемник[63–0](приемник[127–64]; приемник[127–64](исоточник[127–64];

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

    Исключения: РМ: #GP(0): 2,42; #MF; #NM: 3; #PF(fault-code); #SS(0): 1;

    #UD: 10; #AC(0)_cpl3; RM: #GP: 13, 16; #MF; #NM: 3; #UD: 17; VM: исключения

    реального режима; #PF(fault-code).

    PUNPCKLBW/PUNPCKLWD/PUNPCKLDQ/ PUNPCKLQDQ приемник, источник

    PUNPCKLBW/PUNPCKLWD/PUNPCKLDQ/PUNPCKLQDQ (UNPaCK Low Data) —

    распаковка младших упакованных байт (слов, двойных слов, учетверенных слов)

    в слова (двойные слова, учетверенные слова, двойное учетверенное слово).

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

    66 0F 60 /r PUNPCKLBW rxmm1, rxmm2/m128

    66 0F 61 /r PUNPCKLWD rxmm1, rxmm2/m128

    66 0F 62 /r PUNPCKLDQ rxmm1, rxmm2/m128

    66 0F 6C /r PUNPCKLQDQ rxmm1, rxmm2/m128

    Действие: команды PUNPCKLBW, PUNPCKLWD, PUNPCKLDQ и PUNPCKLQDQ

    производят размещение с чередованием элементов из операндов источник и

    приемник согласно следующей схеме:

    PUNPCKLBW:

    приемник[7–0](приемник[7–0]; приемник[71–64](приемник[39–32];

    приемник[15–8](источник[7–0]; приемник[79–72](источник[39–32];

    приемник[23–16](приемник[15–8]; приемник[87–80](приемник[47–40];

    приемник[31–24](источник[15–8]; приемник[95–88]( источник[47–40];

    приемник[39–32](приемник[23–16]; приемник[103–96](приемник[55–48];

    приемник[47–40](источник[23–16]; приемник[111–104](источник[55–48];

    приемник[55–48](приемник[31–24], приемник[119–112](приемник[63–56];

    приемник[63–56](источник[31–24]; приемник[127–120](источник[63–56];

    PUNPCKLWD:

    приемник[15–0](приемник[15–0]; приемник[79–64](приемник[47–32];

    приемник[31–16](источник[15–0]; приемник[95–80](источник[47–32];

    приемник[47–32](приемник[31–16]; приемник[111–96](привмник[63–48];

    приемник[63–А8](источник[31–16]; приемник[127–112](источник[63–48];

    PUNPCKLDQ:

    приемник[31–0](приемник[31–0]; приемник[95–64](приемник[63–32];

    приемник[63–32](источник[31–0]; приемник[127–96](источник[63–32];

    PUNPCKLQDQ:

    приемник[63–0](приемник[63–0]; приемник[127–64](исоточник[63–0];

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

    Исключения: РМ: #GP(0): 2,42; #MF; #NM: 3; #PF(fault-code); #SS(0): 1; #UD:

    10;

    #AC(0)_cpl3; RM: #GP: 13, 16; #MF; #NM: 3; #UD: 17; VM: исключения

    реального режима; #PF(fault-cocle); #AC(0)_u.

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

    PXOR (Packed logical Exclusive OR) — упакованное логическое

    исключающее ИЛИ.

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

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

    Действие: команда производит побитовую операцию логическое исключающее

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

    операнд приемник. Флаги: не изменяются.

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

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

    SHUFPD (Shuffle Packed Double-Precision Floating-Point Values

    Description) — перестановка упакованных значений с плавающей точкой двойной

    точности.

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

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

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

    точности из приемника и источника в приемник в соответствии со значением

    непосредственного операнда маска. Биты маски определяют номера упакованных

    значений с плавающей точкой двойной точности в источнике или приемнике,

    которые будут перемещены в приемник следующим образом:

    • маска.0 = 0: приемник[63–0] ( приемник[63–0];

    • маска.0 = 1: приемник[63–0] ( приемник[127–64];

    • маска.1 = 0: приемник[127–64] ( источник[63–0];

    • маска.1 = 1: приемник[127–64] ( источник[127–64].

    Для перестановки в пределах одного регистра можно использовать один и

    тот же регистр ХММ в качестве источника и приемника.

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

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

    SQRTPD (compute SQuare RooTs of Packed Double-precision floating-point

    values) — вычисление квадратного корня упакованных значений с плавающей

    точкой двойной точности.

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

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

    Действие: вычислить значения квадратных корней упакованных значений с

    плавающей точкой двойной точности источника по следующей схеме: приемник[63-

    0]( SQRT(источник[63-0]); приемник[127-64](SQRT(источник[127-64]).

    Исключения: SIMD (NE): #O, #U, #I, #Р, #D; PM: #GP(0): 37, 42; #SS(0):

    13; #PF(fault-code); #NM: 3; #XM; #UD: 10-12, 15; RM: #GP: 13, 16; #NM: 3;

    #ХМ; #UD: 17-19, 22; VM: исключения реального режима; #PF(fault-code).

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

    SQRTSD (compute SQuare RooT of Scalar Double-precision floating-point

    value) — вычисление квадратного корня скалярного упакованного значения с

    плавающей точкой двойной точности.

    Синтаксис: SQRTSD rxmm1, rxmm2/m64

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

    Действие: вычислить значение квадратного корня младшего упакованного

    значения с плавающей точкой двойной точности источника по схеме:

    приемник[63-0] (SQRT(источник[63-0]); приемник[127-64] — не изменяется.

    Исключения: SIMD (NE): #I, #Р, #D; PM: #GP(0): 37; #NM: 3; #PF(fault-

    code); #SS(0): 13; #UD: 10-12,15; #XM; #AC(0)_cpl3; RM: #GP: 13; #NM: 3;

    #UD: 17-19, 22; #XM; VM: исключения реального режима; #PF(fault-code);

    #AC(0)_u.

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

    SUBPD (SUBtract Packed Double-precision floating-point values) —

    вычитание упакованных значений с плавающей точкой двойной точности.

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

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

    Действие: вычесть пары упакованных значений с плавающей точкой двойной

    точности источника и приемника по схеме: приемник[63-0](приемник[63-0] —

    источник[63-0]; приемник[127-64](приемник[127-64] — источник[127-6А].

    Исключения: SIMD (NE): #O, #U, #I, #Р, #D; PM: #GP(0): 37,42; #NM: 3;

    #PF(fault-code); #SS(0): 13; #UD: 10,11,12,15; #XM; RM: #GP: 13,16; #NM: 3;

    #UD: 17,18, 19, 22; #XM; VM: исключения реального режима; #PF(fault-code).

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

    SUBSD (SUBtract Scalar Double-precision floating-point values) —

    вычитание скалярных упакованных значений с плавающей точкой двойной

    точности.

    Синтаксис: SUBSD rxmm1, rxmm2/m64

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

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

    двойной точности источника и приемника по схеме: приемник[63-0](приемник[63-

    0] — источник[63-0]; приемник[127-63] — не изменяется.

    Исключения: SIMD (NE): #O, #U,. #I, #Р, #D; PM: #GP(0): 37; #NM: 3;

    #PF(fault-code); #SS(0): 13; #UD: 10-12, 15; #XM; #AC(0)_cpl3; RM: #GP: 13;

    #NM: 3; #UD: 17-19, 22; #ХМ; VM: исключения реального режима; #PF(fault-

    code); #AC(0)_u.

    UCOMISD приемник, источник, условие

    UCOMISD (Unordered COMpare Scalar Double-precision floating-point

    values and set EFLAGS) — сравнение неупорядоченных скалярных значений с

    плавающей точкой двойной точности и установка регистра EFLAGS.

    Синтаксис: UCOMISD xmm1, xmm2/m64

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

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

    точкой двойной точности в разрядах [63-0] приемника и источника. По

    результату сравнения установить флаги ZF, PF и CF в регистре EFLAGS (см.

    описание команды COMISD). Отличие команды COMISD от команды UCOMISD состоит

    в генерации исключения недействительной операции с плавающей точкой (#I):

    COMISD генерирует его, когда приемник и(или) источник — QNAN или SNAN;

    команда UCOMISD генерирует #I только в случае, если один из исходных

    операндов — SNAN. В случае генерации немаскированного исключения с

    плавающей точкой регистр EFLAGS не модифицируется.

    Исключения: SIMD (NE): #I (если операнд — SNaN), #D; PM: #GP(0): 37;

    #NM: 3; #PF(fault-code); #SS(0): 13; #UD: 10,11,12,15; #XM; #AC(0)_cpl3;

    RM: #GP: 13; #NM: 3; #UD: 17-19, 22; #ХМ; VM: исключения реального режима;

    #PF(fault-code); #AC(0)_u.

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

    UNPCKHPD (UNPaCK and interleave High Packed Double-precision floating-

    point values) — разделение и чередование старших упакованных значений с

    плавающей точкой двойной точности.

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

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

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

    двойной точности в источнике и приемнике и поместить их с чередованием в

    приемник по схеме: приемник[63-0] ( приемник[127-64]; приемник[127-64] (

    источник[127-64].

    Исключения: PM: #GP(0): 37, 42; #NM: 3; #PF(fault-code); #SS(0): 13;

    #UD: 10, 12,15; RM: #GP: 13,16; #NM: 3; #UD: 17-19,22; #XM; VM: исключения

    реального режима; #PF(fault-code).

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

    UNPCKLPD (UNPaCK and interleave Low Packed Double-precision floating-

    point values) — разделение и чередование младших упакованных значений с

    плавающей точкой двойной точности.

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

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

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

    двойной точности в источнике и приемнике и поместить их с чередованием в

    приемник по схеме: приемник[63-0] ( приемник[63-0]; приемник[127-64] (

    источник[63-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).

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

    XORPD (bitwise logical XOR for Double-precision floating-point values)

    — поразрядное логическое исключающее ИЛИ над упакованными значениями с

    плавающей точкой двойной точности.

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

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

    Действие: выполнить операцию поразрядного логического исключающего ИЛИ

    над парами упакованных значений с плавающей точкой двойной точности в

    приемнике и источнике по схеме: приемник[127-0] ( приемник[127-0])

    побитное__ХОR источник[127-0].

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

    Литература

    1. Гук М., Юров В. Процессоры Pentium 4, Athlon и Duron. — СПб.:

    Питер, 2001.— 512 с.: ил.

    2. Зубков С.В., Assembler для DOS, Windows и Unix.— М.: ДМК, 1999.—

    640 с., ил.

    3. Ровдо А.А., Микропроцкссоры от 8086 до Pentium III Xeon и AMD-K6-

    3.— М.: ДМК, 2000.— 592 с.: ил.

    Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.