Екипът MMX (от Pentium MMX, k6)

MMX технологични команди работят с 64-битови данни число и с данни опаковани в групи (вектори) от общата дължина 64 бита. Такива данни могат да бъдат в паметта или в осем MMX-регистри. Тези регистри се наричат ​​MM0, MM1. MM7. MMX технологични екипи работят със следните типове данни:







  • опаковани байт (осем байта в регистър на 64-битова)
  • опаковани думи (четири 16-битови думи в 64-битов регистър)
  • опаковани двойна дума (две 32-битови думи в 64-битов регистър)
  • 64-битови думи.

На английски език, тези типове данни се наричат ​​съответно опаковани байт, опаковани дума, опаковани двойна дума и четворна дума.

MMX-команди имат следния синтаксис:

Ето инструкция - име на команда, Цел означава мощност операнд, SRC - вход операнд.

Повечето отбори имат наставка, която идентифицира типа на данните, използвани и аритметика:

  • САЩ (неподписана насищане) - насища аритметика, данни неподписан.
  • S или SS (подписан насищане) - насища аритметика, данни за вход. Ако не наставка S, или SS, като се използва цикличен аритметика (обгръщащ).
  • В, W, D, Q посочва типа данни. Ако има две от тези букви в суфикса, първият съответства на входния операнд, а вторият - на изхода.

MMX-командите се изпълняват в същия режим на процесора, и число с плаваща точка. Поради това, изпълнението на MMX-обучение (с изключение на EMMS) "разглезени" регистри за състоянието на думи с плаваща точка. Следната ММХ-команда (наименование: мм - ММХ-регистър; M32, M64 - обем памет 32 и 64 бита, съответно; IMM - незабавно операнд; ir32 - число регистър):

команден процесор осигурява прехода от изпълнението на MMX-инструкция за извършване на нормалните инструкции с плаваща запетая: тя определя стойността 1 във всички части от думата за състоянието.

PADDB mm, mm / М64; PADDW mm, mm / М64; PADDD mm, mm / M64

предмети команда стека данни (байтове, думи или двойни думи) на входа и на изхода операнди. Ако количеството е извън допустимия обхват, тогава правилата на аритметика цикличен излишък се преброяват от друга диапазон. Не се наблюдава "трансфер" единици от един елемент на данни до друг.

PADDSB mm, mm / М64; PADDSW mm, mm / M64

сгънати Екип елементи от данни (байтове или думи) на входа и на изхода операнди. Ако сумата е извън граница стойността на допустимия диапазон, след което се счита, че резултатът да бъде Граничната стойност.

PADDUSB mm, mm / М64; PADDUSW mm, mm / M64

сгънати Екип елементи от данни (байтове или думи) на входа и на изхода операнди. Ако сумата е извън граница стойността на допустимия диапазон, след което се счита, че резултатът да бъде Граничната стойност.

PSUBB mm, mm / М64; PSUBW mm, mm / М64; PSUBD mm, mm / M64

команда изважда елементи от данни (байтове, думи или двойни думи) на входните операнди от елементи от данни изход операнди. Ако резултатът е извън допустимия обхват, тогава правилата на аритметика цикличен подходящ брой единици, считано от друг диапазон. Не се наблюдава "трансфер" единици от един елемент на данни до друг.

PSUBSB mm, mm / М64; PSUBSW mm, mm / M64

команда изважда данни елементи (байтове или думи) на входния елемент от данните за операнди операнд изход. Ако разликата е отвъд граница стойността на допустимия диапазон, след което се счита, че резултатът да бъде Граничната стойност.







PSUBUSB mm, mm / М64; PSUBUSW mm, mm / M64

командни звена, изваждат се въвеждат данни за операнди от изходни данни елементи операнди. Ако разликата е отвъд граница стойността на допустимия диапазон, след което се счита, че резултатът да бъде Граничната стойност.

PSLLW mm, mm / M64 / IMM; PSLLD mm, mm / M64 / IMM; PSLLQ mm, mm / M64 / IMM

оперира данните за команди променят елементи (16, 32 или 64-битови думи) в изходния операнд на броя на битовете, определени от входния операнд. Освободен значителни бита са запълнени с нули.

PSRAW mm, mm / M64 / IMM; PSRAD mm, mm / M64 / IMM

оперира данните за команди променят елементи (16- или 32-битови думи) в изходния операнд на броя на битовете, определени от входния операнд. Ако променя положително число, а след това освободени старши бита са пълни с нули, а ако отрицателни, единиците.

PSRLW mm, mm / M64 / IMM; PSRLD mm, mm / M64 / IMM; PSRLQ mm, mm / M64 / IMM

оперира данните за команди променят елементи (16, 32 или 64-битови думи) в изходния операнд на броя на битовете, определени от входния операнд. Овакантените най-значителните битове са запълнени с нули.

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

команда изчислява обращение (побитовото НЕ) изхода на операнда, а след това побитова логично И между въведените операнд и преобразува стойността изход.

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

команда изчислява побитовото логично XOR на своите операнди.

PMADDWD mm, mm / M64

двойки екип умножава 16-битова дума със знака на входните и изходните операнди. Това осигурява четири 32-битови продукт. След това, първият продукт е добавен към втората, и третата до четвъртата. Сумите, записани в 32-битови операнди изход думи. Ако всички думи на равен 8000h, резултатът ще бъде 80000000h (единственият случай, в който размножаването на отрицателни числа се получава отрицателен резултат).

PMULHW mm, mm / M64

команда двойки умножава 16-битова дума със знака на входните операнди и изход, който осигурява четири 32-битови продукт. Двата MSB на творби, написани на 16-битови операнди изход думи. LSB произведения са загубени.

PMULLW mm, mm / M64

команда двойки умножава 16-битова дума със знака на входните операнди и изход, който осигурява четири 32-битови продукт. LSB произведения, написани на 16-битови операнди изход думи. Двата MSB на делата са загубени.

PCMPEQB mm, mm / М64; PCMPEQW mm, mm / М64; PCMPEQD mm, mm / M64

по двойки сравняване предмети команда данни (байтове, 16- или 32-битови думи) на входа и на изхода операнди. Ако изходен елемент операнди данни е равна на съответния вход член, такива изходни операнд елемент единици запълва. Ако няма равенство, то се запълва с нули.

PCMPGTB mm, mm / М64; PCMPGTW mm, mm / М64; PCMPGTD mm, mm / M64

по двойки сравняване предмети команда данни (байтове, 16- или 32-битова дума със знака) на входа и на изхода операнди. Ако изхода на елемента на операнд данни е по-голям от съответния вход елемент, такива изходни операнд елемент единици запълва; ако той не е по-голям от входа, а след това се запълва с нули.

PACKSSWB mm, mm / М64; PACKSSDW mm, mm / M64

команди превръщат елементите на данните, дълги (16-битова и 32-битова дума със знак) в по-кратък (байта или 16-битови думи със знак). Ако първоначалната стойност е извън допустимия диапазон за вида на изходните данни, а след това в резултат на опаковката се смята, близо до границата стойността на диапазона.

PACKUSWB mm, mm / M64

команда преобразува 16-битова дума от знака на двете операнди в неподписан байт и да ги пише на изходния операнд. Ако оригиналният дума със знака беше повече FFh, в резултат на преобразуването се счита за FFh. Ако оригиналният дума с отрицателен резултат на преобразуването се счита за 00h.

PUNPCKHBW mm, mm / М64; PUNPCKHWD mm, mm / М64; PUNPCKHDQ mm, mm / M64

команда двойки комбинира елементи от данни източник (байтове, 16- или 32-битови думи), които са били в по-горните 32 бита на двете операнди. Получените по-дълги елементи от данни, написани на изход операнд. Първоначалните стойности на LSBs на операнди не влияят на резултата.

PUNPCKLBW mm, mm / М64; PUNPCKLWD mm, mm / М64; PUNPCKLDQ mm, mm / M64

команда двойки елементи от данни в съчетание източник (байтове, 16- или 32-битова дума) е в ниските 32 бита на двете операнди. Получените по-дълги елементи от данни, написани на изход операнд. Първоначалните стойности на повечето значими бита на операнди резултатът не е засегнато.

MOVD mm, mm / M32 / ir32

копия на 32 бита на ниски бита ред MMX регистрация или памет, или от регистър число към долната 32-битов ММХ-регистъра (горните бита са запълнени с нули).

MOVD M32 / ir32, мм

копия на 32 бита на ниски бита ред MMX памет или регистър за число регистрирате.