MMX (Multimedia Extensions — мультимедійні розширення) — комерційна назва додаткового набору інструкцій, що виконують характерні для процесів кодування / декодування потокових аудіо / відео даних дії за одну машинну інструкцію. Вперше з'явився в процесорах Pentium MMX. Розроблений у першій половині 1990-х.
Регістри MMX Розширення MMX включає в себе вісім 64-бітних регістрів загального користування MM0-MM7. Для сумісності зі способами збереження стану процесора в наявних операційних системах Intel була змушена об'єднати в програмній моделі процесора вісім регістрів MMX з мантисами восьми регістрів математичного співпроцесора (FPU). Апаратно це можуть бути різні пристрої, але з точки зору програміста — це одні й ті ж регістри. Таким чином, не можна одночасно користуватися командами математичного співпроцесора і MMX.
Типи даних MMX Команди технології MMX працюють з 64-бітними цілочисельними даними, а також з даними, упакованими в групи (вектори) загальною довжиною 64 біта. Такі дані можуть перебувати в пам'яті або у восьми MMX-регістрах.
Команди технології MMX працюють з такими типами даних: Упаковані байти (вісім байтів в одному 64-розрядному регістрі) (); упаковані слова (чотири 16-розрядних слова в 64-розрядному регістрі) (packed word); Упаковані подвійні слова (два 32-розрядних слова в 64-розрядному регістрі) (packed doubleword); 64-розрядні слова (quadword).
Синтаксис MMX - команди мають такий синтаксис: instruction [dest, src] Тут instruction — ім'я команди, dest позначає вихідний операнд, src — вхідний операнд.
У систему команд введено 57 додаткових інструкцій для одночасної обробки декількох одиниць даних. Більшість команд мають суфікс, який визначає тип даних і використану арифметику: US (unsigned saturation) — , дані без знака. S або SS (signed saturation) — арифметика з насиченням, дані зі знаком. Якщо у суфіксі немає ні S, ні SS, використовується циклічна арифметика (wraparound). B, W, D, Q вказують тип даних. Якщо у суфіксі є дві з цих букв, перша відповідає вхідному операнду, а друга — вихідно. Нові інструкції включають такі групи: Команди пересилання даних (Data Transfer Instructions) між регістрами MMX і цілочисельними регістрами і пам'яттю; Команди перетворення типів Арифметичні операції (Arithmetic Instructions), що включають додавання і віднімання в різних режимах, множення і комбінацію множення і складання; Команди порівняння (Comparison Instructions) елементів даних на рівність чи за величиною; Логічні операції (Logical Instructions) — І, І-НЕ, АБО і виключне АБО, що виконуються над 64 бітними операндами; Зсувні операції (Shift Instructions) логічні і арифметичні; Команди управління станом (Empty MMX State) очищення MMX — установка ознак порожніх регістрів в слові тегів. Інструкції MMX не впливають на прапорці умов. Регістри MMX, на відміну від регістрів FPU, адресуються фізично, а не відносно TOS. Будь-яка інструкція MMX обнуляє поле TOS регістра стану FPU. Інструкції MMX доступні з будь-якого режиму процесора.
Див. також Extended MMX SSE SSE2 SSE3
Література Зубков С. В. Assembler для DOS, Windows, UNIX. 3-тє вид., Стер. — М.: ДМК Прес; СПб. : Питер, 2004. — 608 с.
Посилання IA Software Developer's Manual, Vol 1 , Див. розділ 8 про програмування MMX Codenet.ru , Стаття про програмування ММХ