Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
НУ”Львівська політехніка”
Кафедра ЕОМ
Лабораторна робота №4
з дисципліни”Архітектура комп’ютерів”
Використання команди EMMS. “Фізичне” розташування ММХ-регістрів
Використання команди EMMS
MMX-команди виконуються в тому ж режимі процесора, що й команди з плаваючою комою. Тому при виконанні всіх MMX-команд (крім EMMS) "псується" слово стану регістрів з плаваючою комою. Команда EMMS забезпечує перехід процесора від виконання MMX-команд до виконання звичайних команд з плаваючою комою: вона встановлює значення 1 у всіх розрядах слова стану. Закінчуйте командою EMMS любий фрагмент програми, в якому є MMX-команди. Якщо цього не робити, то
операції з плаваючою комою будуть давати невірні результати;
інколи в результаті операцій з плаваючою комою будуть генеруватись виключення типу Stack overflow.
“Фізичне” розташування ММХ-регістрів
MMX-команди використовують вісім 64-розрядних регістрів. До регістрів забезпечується прямий доступ за іменами: MM0,..., MM7. Жодні інші команди не можуть звертатись до цих регістрів. "Фізично" регістри технології MMX розміщені в мантисах регістрів з плаваючою комою (біти 0-63). Таким чином, під час запису любого значення в MMX-регістр це значення попадає в один з регістрів з плаваючою комою. При виконанні MMX-команд
всі біти порядку і знаковий біт у відповідному регістрі з плаваючою комою заповнюються одиницями (це біти 64-79)
все слово стану регістрів з плаваючою комою заповнюється нулями.
Синтаксис та використання команд множення.
MMX-команди множення попарно перемножують 16-розрядні слова операндів, що дає чотири 32-розрядних добутки. Команда pmaddwd додає перший добуток до другого, а третій до четвертого. Суми записуються в 32-розрядні слова вихідного операнда. Команда pmulhw записує в 16-розрядні слова вихідного операнда старші розряди кожного з чотирьох добутків, а pmullw - молодші розряди добутків.
Команди множення
Команда
b
w
d
q
pmadd
pmulh
pmull
- тип даних, що підтримується.Стрілка показує від вхідного типу даних до вихідного.
Детально описати зміст заданих команд та результат їх виконання, якщо в ММ2 : 7F80 7E01 80FF 777F , а в ММ4 : 80FF 7F80 777F 0001.
Варіант 13:
pmaddwd MM2, MM4
Команда pmaddwd (циклічна арифметика)Команда pmaddwd попарно перемножує 16-розрядні слова зі знаком вхідного и вихідного операндів. Це дає чотири 32-розрядних добутки. Потім перший добуток додається до другого, а третій до четвертого. Суми записуються в 32-розрядні слова вихідного операнда.
Вхідний операнд може знаходитись в MMX-регістрі або в пам’яті; вихідний операнд повинен знаходитись в MMX-регістрі.
7F80 7E01 80FF 777F
80FF 7F80 777F 0001
7F008000 3C36FF00
Результат:
7F008000 3C36FF00
777F*0001=777F
80FF*777F=3C368781
777F+3C368781=3C36FF00
7E01*7F80=3EC17F80
7F80*80FF=403F0080
3EC17F80+403F0080=7F008000