МЕНЮ


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

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


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

    CMPSD Сравнение скалярное

    COMISD Упорядоченное сравнение скалярных чисел с помещением

    результата в биты регистра EFLAGS (если хоть один из

    операндов QNaN или SNaN, генерируется исключение #I и

    EFLAGS не модифицируется)

    UCOMISD Неупорядоченное сравнение (то же, но исключение #I

    генерируется только в случае SNaN)

    Инструкции перестановок и распаковки операндов с плавающей точкой двойной

    точности в регистрах ХММ

    SHUFPD Перестановка элементов в упакованных операндах

    UNPCKHPD Распаковка и чередование старших элементов (в приемнике

    собираются старшие части операндов)

    UNPCKLPD Распаковка и чередование младших элементов (в приемнике

    собираются младшие части операндов)

    Инструкции преобразований в формат и из формата упакованных и скалярных

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

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

    упакованные целые (двойные слова)

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

    точкой двойной точности в упакованные целые (двойные слова)

    CVTP12PD Преобразование упакованных целых (двойных слов) в

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

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

    упакованные целые (двойные слова)

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

    точкой двойной точности в упакованные целые (двойные слова)

    CVTDQ2PD Преобразование упакованных 32-битных целых в упакованные

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

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

    одинарной точности в числа двойной точности

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

    двойной точности в числа одинарной точности

    CVTSS2SD Преобразование скалярного числа с плавающей точкой

    одинарной точности в число двойной точности

    CVTSD2SS Преобразование скалярного числа с плавающей точкой двойной

    точности в число одинарной точности

    CVTSD2SI Преобразование скалярного числа одинарной точности в 32-

    битное целое

    CVTTSD2SI Преобразование с усечением скалярного числа двойной

    точности в 32-битное целое

    CVTS12SD Преобразование 32-битного целого в число двойной точности

    Инструкции преобразований с числами одинарной точности

    CVTDQ2PS Преобразование упакованных 32-битных целых в упакованные

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

    CVTPS2DQ Преобразование упакованных чисел одинарной точности в

    числа двойной точности

    CVTTPS2DQ Преобразование с усечением упакованных чисел одинарной

    точности в числа двойной точности

    Целочисленные 128-битные SIMD-инструкции

    MOVDQA Пересылка выровненного 128-битного операнда

    MOVDQU Пересылка невыровненного 128-битного операнда

    MOVQ2DQ Пересылка 64-битного целого из ММХ в ХММ

    MOVDQ2Q Пересылка 64-битного целого из ХММ в ММХ

    PMULUDQ Умножение упакованных беззнаковых 32-битных целых

    PADDQ Сложение упакованных 64-битных целых

    PSUBQ Вычитание упакованных 64-битных целых

    PSHUFLW Перестановка упакованных младших слов

    PSHUFHW Перестановка упакованных старших слов

    PSHUFD Перестановка упакованных двойных слов

    PSLLDQ Логический сдвиг 64-битных чисел влево

    PSRLDQ Логический сдвиг 64-битных чисел вправо

    PUNPCKHQDQ Распаковка старших 64-битных чисел

    PUNPCKLQDQ Распаковка младших 64-битных чисел Управление кэшированием

    CLFLUSH Очистка и инвалидация строки кэша (всех уровней), связанной с

    указанным операндом в памяти

    LFENCE Упорядочивание операций загрузки из памяти

    MFENCE Упорядочивание операций загрузки и записи

    PAUSE Улучшение выполнения цикла ожидания

    MASKMOVDQU Выборочная запись байтов из ХММ в память, минуя кэш

    MOVNTPD Запись пары упакованных чисел из ХММ в память, минуя кэш

    MOVNTDQ Запись 128-битного числа из ХММ в память, минуя кэш

    MOVNTI Запись двойного слова из регистра общего назначения в память,

    минуя кэш

    Инструкции 3DNow!, появившиеся с процессорами AMD K6-2, поддерживаются

    всеми последующими процессорами AMD и некоторыми другими процессорами.

    Процессоры Intel этот набор не поддерживают, хотя в SSE имеются

    инструкции, совпадающие с частью инструкций 3DNow!. В процессорах Athlon

    расширение 3DNow! получило дополнительные инструкции для сигнальных

    процессоров. Целочисленные инструкции ММХ и управления кэшированием

    совпадают с одноименными инструкциями SSE. В данной работе инструкции

    3DNow! не рассмотрены, так как не относятся к инструкциям процессоров

    Pentium 3,4.

    6. Команды блока XMM (SSE и SSE2)

    Порядок описания команд в этом разделе следующий:

    • в заголовок вынесена схема команды, поясняющая общий набор и

    назначение операндов;

    • в следующей строке дается название команды, расшифровка ее мнемоники

    и назначение;

    • далее следует синтаксис команды (сложный синтаксис приводится в виде

    диаграмм), при описании которого используются следующие обозначения:

    • r8, r16, r32 — операнд в одном из регистров размером байт,

    слово или двойное слово;

    • m8, m16, m32, m48, m64 — операнд в памяти размером байт,

    слово, двойное слово или 48 бит;

    • i8, i16, i32 — непосредственный операнд размером байт, слово

    или двойное слово;

    • машинный код для всех сочетаний операндов описываемой команды (при

    сложном синтаксисе машинный код включается в синтаксис);

    • состояние флагов после выполнения команды;

    • описание действия команды;

    • описание флагов после выполнения команды, при этом приводятся

    сведения только о флагах, изменяемых командой, и используются следующие

    обозначения:

    • 1 — флаг устанавливается (равен 1);

    • 0 — флаг сбрасывается (равен 0);

    • r — значение флага зависит от результата выполнения команды;

    • ? — после выполнения команды флаг не определен;

    • список исключений.

    На многих диаграммах в целях компактности возможные сочетания

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

    [pic]

    Конструируя команду на основе подобной синтаксической диаграммы, нужно

    помнить о соответствии типов. Допустимы только следующие сочетания: "r8,

    m8", "r16, m16", "r32, m32", а сочетание, например, "r8, m16" недопустимо.

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

    оговариваются специальным образом.

    Описание машинного кода приводится в двух вариантах.

    • В двоичном виде. Это описание применяется для демонстрации

    особенностей внутренней структуры машинной команды. Байты машинного

    представления машинной команды отделяются двоеточием.

    • В шеснадцатеричном виде. Каждый байт машинного представления команды

    представлен двумя шестнадцатеричными цифрами. Часто за одним (двумя и

    более) первым байтом следует обозначение: /цифра. Это означает, что поле

    reg в байте mod r/m используется как часть кода операции и цифра

    представляет содержимое этого поля.

    Вместо цифры может стоять символ "r" — /r. Как уже не раз отмечалось,

    большинство команд процессора — двухоперандные. Один операнд располагается

    в регистре, местоположение другого операнда определяет байт ModR/M — это

    может быть либо регистр, либо ячейка памяти. Более того, если операнд —

    ячейка памяти, то содержимое байта ModR/M определяет номенклатуру

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

    вычисления эффективного адреса.

    При описании команд могут быть опущены некоторые из перечисленных

    пунктов. Например, отсутствие пункта "синтаксис" говорит о том, что он

    совпадает со схемой команды. Отсутствие пункта "исключения" означает, что

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

    описания флагов.

    Некоторые регистры программной модели процессора имеют внутреннюю

    структуру. Указание того, о каком поле такого регистра идет речь, показано

    следующим образом: имя_регистра.имя_поля.

    1. Команды блока XMM (SSE – Pentium 3)

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

    ADDPS (ADDition Packed Single-precision float-point) — сложение

    упакованных значений в формате ХММ.

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

    Машинный код: 00001111:01011000:mod rxmm1 r/m

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

    [pic]

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

    code); #SS(0): 13; #UD: 10,11,12,13; #XM; RM: #GP: 13; #NM: 3; #UD: 17,18;

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

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

    ADDSS (ADD Scalar Single-precision float-point) — скалярное сложение

    значений в формате ХММ.

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

    Машинный код: 11110011:00001111:01011000:mod rxmm1 r/m

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

    [pic]

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

    #PF(fault-code); #SS(0): 13; #UD: 10-13; #XM; RM: #GP: 13; #NM: 3; #UD: 17-

    20; #XM; VM: исключения реального режима; #АС(0); #PF(fault-code).

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

    ANDNPS (bit-wise logical AND Not for Packed Single-precision float-

    point) — поразрядное логическое И-НЕ над упакованными значениями в формате

    ХММ.

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

    Машинный код: 00001111:01010101:mod rxmm1 r/m

    Действие: инвертировать биты операнда приемник, над каждой парой битов

    операндов приемник (после инвертирования) и источник выполнить операцию

    логического И.

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

    10,12,13; RM: #GP: 13; #NM: 3; #UD: 7; VM: исключения реального режима;

    #PF(fault-code); #UD: 16, 17.

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

    ANDPS (bit-wise logical AND for Packed Single-precision float-point) —

    поразрядное логическое И над каждой парой бит операндов источник и

    приемник.

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

    Машинный код: 00001111:01010100: mod rxmm 1 r/m

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

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

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

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

    CMPPS (CoMPare Packed Single-precision float-point) — сравнение

    упакованных значений в формате ХММ

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

    Машинный код: 00001111:11000010: mod rxmm1 r/m: i8

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

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

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

    формируются единичные (если условие выполнено) или нулевые элементы (если

    условие не выполнено).

    |Усло-|Описание |Отношение |Эмуляция |Код |Результат, |Исключение #I, |

    |вие |условия | | |маски |если операнд|если операнд |

    | | | | |i8 |NaN |qNAN/sNAN |

    |Eq |Equal |xmm1== |000b |False |Нет |

    | |(равно) |xmm2 | | | |

    |Lt |less-than |xmm1> |Перестанов-| |False |Да |

    | |than |xmm2 |ка с | | | |

    | |(больше | |сохранением| | | |

    | |чем) | |, lt | | | |

    | | | | | | | |

    | |greater- |xmm1>>= |Перестанов-| |False |Да |

    | |than-or- |xmm2 |ка с | | | |

    | |equal | |сохране- | | | |

    | |(больше | |нием, le | | | |

    | |чем или | | | | | |

    | |равно) | | | | | |

    |Unord|Unordered |xmm1 ? |011b |True |Нет |

    | |(одно из |xmm2 | | | |

    | |чисел | | | | |

    | |QNAN) | | | | |

    | | | | | | |

    |Neq |not-equal |!(xmm1== |100b |True |Нет |

    | |(не равно)|xmm2) | | | |

    |Nit |not-less- |!(xmm1 >|Перестанов-| |True |Да |

    | |r- | |ка с | | | |

    | |than(не |xmm2) |сохранением| | | |

    | |больше | |, nlt | | | |

    | |чем) | | | | | |

    | |not-greate|!(xmm1>>| | |True |Да |

    | |r-than-or-|= xmm2) |Перестанов-| | | |

    | | | |ка с | | | |

    | |equal (не | |сохранением| | | |

    | |больше чем| |, nle | | | |

    | | | | | | | |

    | |или равно)| | | | | |

    |Ord |Ordered |!(xmm1 |111b |False |Нет |

    | |(числа |?xmm2) | | | |

    | |неQNAN) | | | | |

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

    #SS(0): 13; #UD: 10-13; #XM; RM: #GP: 13; #NM: 3; #VD: 17-20; #XM; VM:

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

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

    CMPSS (CoMPare Scalar Single-precision float-point) — скалярное

    сравнение значений в формате ХММ.

    Синтаксис: CMPSS rxmm1, rxmm2/m32, i8

    Машинный код: 11110011:00001111:11000010:mod rxmm1 r/m: i8

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

    сравнение, в результате которого формируются единичные (если условие

    выполнено) или нулевые элементы (если условие не выполнено). Значение

    источника может быть расположено в 32-битной ячейке памяти или в младшем

    двойном слове регистра ХММ. Значение приемника расположено в младшем

    двойном слове другого регистра ХММ.

    Возможные значения условий приведены в описании команды CMPPS.

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

    code); #SS(0): 13; #UD: 10-13; #XM; RM: #GP: 13; #NM: 3; #UD: 17-20; #ХМ;

    VM: исключения реального режима; #АС(0); #PF(fault-code).

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

    COMISS (COMpare ordered Scalar Single-precision float-point COMpare

    and Set EFLAGS) — скалярное упорядоченное сравнение значений в формате ХММ

    с установкой EFLAGS.

    Синтаксис: COMISS rxmm1, rxmm2/m32

    Машинный код: 00001111:00101111 :mod rxmm1 r/m

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

    источник, в результате чего устанавливаются флаги в регистре EFLAGS, как

    показано ниже.

    Значение источника может быть расположено в 32-битной ячейке памяти

    или младшем двойном слове регистра ХММ. Значение приемника расположено в

    младшем двойном слове другого регистра ХММ.

    |Соотношение операндов |Значение флагов |

    |Приемник>источник |0F=SF=AF=ZF=PF=CF=0 |

    |Приемникисточник |0F=SF=AF=ZF=PF=CF=0 |

    |Приемник источник), 2 (приемник >= источник), 5

    ([pic] (приемник > источник)), 6 ([pic] (приемник >= источник)).

    Исключения: SIMD (NE): #I (если операнд SNaN или QNaN), #D; 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).

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

    CMPSD (CoMPare Scalar Double-precision floating-point values

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

    точности.

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

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

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

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

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

    атрибутам команды CMPPD.

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

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

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

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

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

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


    Приглашения

    09.12.2013 - 16.12.2013

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

    09.12.2013 - 16.12.2013

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




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