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 додаткових інструкцій для одночасної обробки декількох одиниць даних. Більшість команд мають суфікс, який визначає тип даних і використану арифметику:

  • US (unsigned saturation) — арифметика з насиченням[en], дані без знака.
  • 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 доступні з будь-якого режиму процесора.

Див. також ред.

Література ред.

  • Зубков С. В. Assembler для DOS, Windows, UNIX. 3-тє вид., Стер. — М.: ДМК Прес; СПб. : Питер, 2004. — 608 с.

Посилання ред.