Екипът 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 памет или регистър за число регистрирате.