Из Википедии, бесплатной энциклопедии
  (Перенаправлено из набора инструкций X86 )
Перейти к навигации Перейти к поиску

Набор инструкций x86 относится к набору инструкций, которые поддерживают микропроцессоры, совместимые с x86 . Инструкции обычно являются частью исполняемой программы, часто хранятся в виде компьютерного файла и выполняются на процессоре.

Набор инструкций x86 был расширен несколько раз, введены более широкие регистры и типы данных, а также новые функции. [1]

целочисленные инструкции x86 [ править ]

Ниже приведен полный набор инструкций Intel 8086/8088 (всего 81 инструкция). Большинство, если не все эти инструкции доступны в 32-битном режиме; они просто работают с 32-битными регистрами ( eax , ebx и т. д.) и значениями вместо своих 16-битных ( ax , bx и т. д.) аналогов. См. Также язык ассемблера x86 для получения краткого руководства для этого семейства процессоров. Обновленный набор команд также сгруппирован по архитектуре ( i386 , i486 , i686 ) и в более общем смысле называется x86 32 и x86 64 (также известный как AMD64 ).

Исходные инструкции для 8086/8088 [ править ]

Добавлено в конкретных процессорах [ править ]

Добавлено с 80186 / 80188 [ править ]

Добавлен с номером 80286 [ править ]

Добавлен с номером 80386 [ править ]

Добавлен с номером 80486 [ править ]

Добавлено с Pentium [ править ]

Добавлено с Pentium MMX [ править ]

Также были добавлены регистры MMX и инструкции поддержки MMX. Их можно использовать как для операций с целыми числами, так и с плавающей запятой, см. Ниже.

Добавлен AMD K6 [ править ]

AMD изменила бит определения CPUID для этой функции с K6-II.

Добавлено с Pentium Pro [ править ]

Добавлено с Pentium II [ править ]

Добавлено с помощью SSE [ править ]

Добавлено с SSE2 [ править ]

Добавлено с SSE3 [ править ]

Добавлено с SSE4.2 [ править ]

Добавлено с x86-64 [ править ]

Добавлен с помощью AMD-V [ править ]

Добавлено с Intel VT-x [ править ]

Добавлен с помощью ПРО [ править ]

LZCNT , POPCNT (POPulation CouNT) - расширенная обработка битов

Добавлено с BMI1 [ править ]

ANDN, BEXTR, BLSI, BLSMSK, BLSR, TZCNT

Добавлено с ИМТ2 [ править ]

BZHI, MULX, PDEP, PEXT, RORX, SARX, SHRX, SHLX

Добавлено с помощью TBM [ править ]

AMD представила TBM вместе с BMI1 в своей линейке процессоров Piledriver [7] ; более поздние процессоры AMD Jaguar и Zen не поддерживают TBM. [8] Ни один из процессоров Intel (по состоянию на 2020 год) не поддерживает TBM.

Добавлен с набором инструкций CLMUL [ править ]

Добавлено с Intel ADX [ править ]

инструкции x87 с плавающей запятой [ править ]

Оригинальные 8087 инструкции [ править ]

Добавлено в конкретных процессорах [ править ]

Добавлен с номером 80287 [ править ]

Добавлен с номером 80387 [ править ]

Добавлено с Pentium Pro [ править ]

  • Варианты FCMOV : FCMOVB, FCMOVBE, FCMOVE, FCMOVNB, FCMOVNBE, FCMOVNE, FCMOVNU, FCMOVU
  • Варианты FCOMI : FCOMI, FCOMIP, FUCOMI, FUCOMIP

Добавлено с помощью SSE [ править ]

FXRSTOR, FXSAVE

Они также поддерживаются на более поздних Pentium II, которые не содержат поддержки SSE.

Добавлено с SSE3 [ править ]

FISTTP (преобразование x87 в целое с усечением независимо от слова состояния)

Инструкции SIMD [ править ]

Инструкции MMX [ править ]

Команды MMX работают с регистрами mm, которые имеют ширину 64 бита. Они используются совместно с регистрами FPU.

Исходные инструкции MMX [ править ]

Добавлено с Pentium MMX

Инструкции MMX добавлены в определенные процессоры [ править ]

Инструкции EMMI [ править ]

Добавлен с 6x86MX от Cyrix , сейчас не рекомендуется

PAVEB, PADDSIW, PMAGW, PDISTIB, PSUBSIW, PMVZB, PMULHRW, PMVNZB, PMVLZB, PMVGEZB, PMULHRIW, PMACHRIW

Инструкции MMX добавлены с MMX + и SSE [ править ]

Следующая инструкция MMX была добавлена ​​с SSE. Они также доступны на Athlon под названием MMX +.

Инструкции MMX добавлены с SSE2 [ править ]

Следующие инструкции MMX были добавлены с SSE2:

Инструкции MMX добавлены с SSSE3 [ править ]

3DNow! инструкции [ редактировать ]

Добавлен с K6-2

FEMMS, PAVGUSB, PF2ID, PFACC, PFADD, PFCMPEQ, PFCMPGE, PFCMPGT, PFMAX, PFMIN, PFMUL, PFRCP, PFRCPIT1, PFRCPIT2, PFRSQIT1, PFRSQRT, PFSUB, PIETCHWFSW, PFRSQRT, PFSUB, PFRFWF

3DNow! + Инструкции [ редактировать ]

Добавлен Athlon и K6-2 + [ править ]

PF2IW, PFNACC, PFPNACC, PI2FW, PSWAPD

Добавлено с помощью Geode GX [ править ]

PFRSQRTV, PFRCPV

Инструкции SSE [ править ]

Добавлен с Pentium III

Инструкции SSE работают с регистрами xmm, ширина которых составляет 128 бит.

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

  • Одинарные побитовые операции с плавающей запятой ANDPS, ANDNPS, ORPS и XORPS дают тот же результат, что и целые числа SSE2 (PAND, PANDN, POR, PXOR) и двойные (ANDPD, ANDNPD, ORPD, XORPD), но могут вызвать дополнительную задержку для домена изменяется при применении значений неправильного типа. [11]

Инструкции SSE2 [ править ]

Добавлено с Pentium 4

Команды SSE2 SIMD с плавающей запятой [ править ]

Инструкции по перемещению данных SSE2 [ править ]
Упакованные арифметические инструкции SSE2 [ править ]
Логические инструкции SSE2 [ править ]
SSE2 инструкции по сравнению [ править ]
SSE2 инструкции по перемешиванию и распаковке [ править ]
Инструкции по преобразованию SSE2 [ править ]
  • CMPSD и MOVSD имеют то же имя, что и мнемоника строковых инструкций CMPSD (CMPS) и MOVSD (MOVS) ; Однако, бывший относятся к скалярным двойной точности с плавающими точками , тогда как latters см двойной строки.

Целочисленные инструкции SSE2 SIMD [ править ]

SSE2 MMX-подобные инструкции расширены до регистров SSE [ править ]

SSE2 позволяет выполнять инструкции MMX в регистрах SSE, одновременно обрабатывая вдвое больший объем данных.

Целочисленные инструкции SSE2 только для регистров SSE [ править ]

Следующие инструкции можно использовать только с регистрами SSE, поскольку по своей природе они не работают с регистрами MMX.

Инструкции SSE3 [ править ]

Добавлен Pentium 4 с поддержкой SSE3

Команды SSE3 SIMD с плавающей запятой [ править ]

Целочисленные инструкции SSE3 SIMD [ править ]

Инструкции SSSE3 [ править ]

Добавлен с серией Xeon 5100 и начальным Core 2

Следующие MMX-подобные инструкции, расширенные до регистров SSE, были добавлены с SSSE3.

Инструкции SSE4 [ править ]

SSE4.1 [ править ]

Добавлен Core 2, изготовленный по 45-нм техпроцессу

SSE4.1 SIMD-инструкции с плавающей запятой [ править ]
Целочисленные инструкции SSE4.1 SIMD [ править ]

SSE4a [ править ]

Добавлено с процессорами Phenom

  • EXTRQ / INSERTQ
  • МОВНЦД / МОВНЦС

SSE4.2 [ править ]

Добавлено с процессорами Nehalem

Инструкции, производные от SSE5 [ править ]

SSE5 был предложенным расширением SSE AMD. В комплект поставки не входил полный набор инструкций Intel SSE4, что делало его конкурентом SSE4, а не преемником. AMD решила не реализовывать SSE5, как предлагалось изначально, однако были представлены производные расширения SSE.

XOP [ править ]

Представлено ядром процессора Bulldozer, удалено из Zen (микроархитектура) и далее.

Ревизия большей части набора инструкций SSE5

F16C [ править ]

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

FMA3 [ править ]

Поддерживается в процессорах AMD, начиная с архитектуры Piledriver, и в процессорах Intel, начиная с процессоров Haswell и Broadwell, с 2014 года.

Объединенное умножение-сложение (векторное умножение-накопление с плавающей запятой) с тремя операндами.

FMA4 [ править ]

Поддерживается в процессорах AMD, начиная с архитектуры Bulldozer. По состоянию на 2017 год не поддерживается ни одним чипом Intel.

Объединенное умножение-сложение с четырьмя операндами. FMA4 была реализована аппаратно до FMA3.

AVX [ править ]

AVX впервые был поддержан Intel с Sandy Bridge и AMD с Bulldozer .

Векторные операции с 256-битными регистрами.

AVX2 [ править ]

Представлен в микроархитектуре Intel Haswell и AMD Excavator .

Расширение большинства векторных целочисленных инструкций SSE и AVX до 256 бит

AVX-512 [ править ]

Представлен в Intel Xeon Phi x200

Векторные операции над 512-битными регистрами.

Основа AVX-512 [ править ]

Криптографические инструкции [ править ]

Инструкции Intel AES [ править ]

6 новых инструкций.

RDRAND и RDSEED [ править ]

Инструкции Intel SHA [ править ]

7 новых инструкций.

Недокументированные инструкции [ править ]

Недокументированные инструкции x86 [ править ]

Процессоры x86 содержат недокументированные инструкции, которые реализованы на чипах, но не перечислены в некоторых официальных документах. Их можно найти в различных источниках в Интернете, таких как Список прерываний Ральфа Брауна и на sandpile.org.

Недокументированные инструкции x87 [ править ]

FFREEP выполняет FFREE ST (i) и выталкивает стек

См. Также [ править ]

  • CLMUL
  • RDRAND
  • Расширения Larrabee
  • Расширенные векторные расширения 2
  • Наборы команд обработки битов
  • CPUID

Ссылки [ править ]

  1. ^ a b «Re: Идентификация процессора Intel и инструкция CPUID» . Проверено 21 апреля 2013 .
  2. ^ Тот, Эрвин (1998-03-16). «BSWAP с 16-битными регистрами» . Архивировано из оригинала на 1999-11-03. Команда опускает верхнее слово регистра двойного слова, не затрагивая его старшие 16 бит.
  3. ^ Coldwin, Gynvael (2009-12-29). «Префикс BSWAP + 66h» . Проверено 3 октября 2018 . внутреннее (нулевое) расширение значения меньшего (16-битного) регистра… применение bswap к 32-битному значению «00 00 AH AL»,… усеченное до младших 16 битов, которые равны «00 00». … Bochs… bswap reg16 действует так же, как bswap reg32… QEMU… игнорирует префикс 66h
  4. ^ «RSM - Возобновить из режима управления системой» . Архивировано 12 марта 2012 года.CS1 maint: bot: исходный статус URL неизвестен ( ссылка )
  5. ^ Справочное руководство по оптимизации архитектур Intel 64 и IA-32 , раздел 7.3.2
  6. ^ Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32 , раздел 4.3, подраздел «PREFETCHh - предварительная выборка данных в кэши»
  7. ^ Холлингсворт, Брент. "Новые" Бульдозеры "и" Пиледриверы "инструкции" (pdf) . Advanced Micro Devices, Inc . Проверено 11 декабря 2014 .
  8. ^ "Семейство 16h AMD A-Series Data Sheet" (PDF) . amd.com . AMD . Октябрь 2013 . Проверено 2 января 2014 .
  9. ^ "Руководство программиста архитектуры AMD64, Том 3: Общие и системные инструкции" (PDF) . amd.com . AMD . Октябрь 2013 . Проверено 2 января 2014 .
  10. ^ "tbmintrin.h из GCC 4.8" . Проверено 17 марта 2014 .
  11. ^ https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-optimization-manual.pdf раздел 3.5.2.3
  12. ^ «Микроархитектура процессоров Intel, AMD и VIA: руководство по оптимизации для программистов на ассемблере и разработчиков компиляторов» (PDF) . Проверено 17 октября, 2016 .
  13. ^ "Шахматное программирование AVX2" . Проверено 17 октября, 2016 .
  14. ^ "Re: Недокументированные коды операций (HINT_NOP)" . Архивировано из оригинала на 2004-11-06 . Проверено 7 ноября 2010 .
  15. ^ "Re: Также некоторые недокументированные коды операций 0Fh" . Архивировано из оригинала на 2003-06-26 . Проверено 7 ноября 2010 .

Внешние ссылки [ править ]

  • Бесплатная документация по IA-32 и x86-64 , предоставленная Intel
  • Справочник по коду операции и инструкциям x86
  • Справочник по инструкциям x86 и amd64
  • Таблицы инструкций: списки задержек инструкций, пропускной способности и сбоев микроопераций для процессоров Intel, AMD и VIA.
  • Список инструкций Netwide Assembler (из Netwide Assembler )