Цю статтю потрібно повністю переписати відповідно до стандартів якості Вікіпедії. Ви можете допомогти, переробивши її. Можливо, сторінка обговорення містить зауваження щодо потрібних змін.(серпень 2019)
MMX (Multimedia Extensions — мультимедійні розширення) — комерційна назва додаткового набору інструкцій, що виконують характерні для процесів кодування / декодування потокових аудіо / відео даних дії за одну машинну інструкцію. Вперше з'явився в процесорах Pentium MMX. Розроблений у першій половині 1990-х.
Регістри MMX
Розширення MMX включає в себе вісім 64-бітних регістрів загального користування MM0-MM7. Для сумісності зі способами збереження стану процесора в наявних операційних системах Intel була змушена об'єднати в програмній моделі процесора вісім регістрів MMX з мантисами восьми регістрів математичного співпроцесора (FPU). Апаратно це можуть бути різні пристрої, але з точки зору програміста — це одні й ті ж регістри. Таким чином, не можна одночасно користуватися командами математичного співпроцесора і MMX.
Типи даних MMX
Команди технології MMX працюють з 64-бітними цілочисельними даними, а також з даними, упакованими в групи (вектори) загальною довжиною 64 біта. Такі дані можуть перебувати в пам'яті або у восьми MMX-регістрах.
Команди технології MMX працюють з такими типами даних:
Упаковані байти (вісім байтів в одному 64-розрядному регістрі) (англ.packed byte);
упаковані слова (чотири 16-розрядних слова в 64-розрядному регістрі) (packed word);
Упаковані подвійні слова (два 32-розрядних слова в 64-розрядному регістрі) (packed doubleword);
64-розрядні слова (quadword).
Синтаксис
MMX - команди мають такий синтаксис:
instruction [dest, src]
Тут instruction — ім'я команди, dest позначає вихідний операнд, src — вхідний операнд.
У систему команд введено 57 додаткових інструкцій для одночасної обробки декількох одиниць даних.
Більшість команд мають суфікс, який визначає тип даних і використану арифметику:
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 доступні з будь-якого режиму процесора.