Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти й науки України
Національний університет “Львівська політехніка”
Кафедра ЕОМ
Лабораторна робота №3
“ Використання команд множення ”
Львів-2005
Виконання роботи
1. Використання команди EMMS.
MMX-команди виконуються в тому ж режимі процесора, що і команди із плаваючою комою. Тому при виконанні всіх MMX-команд (крім EMMS) "псується" слово стану регістрів з плаваючою комою. Команда EMMS забезпечує перехід процесора від виконання MMX-команд до виконання звичайних команд з плаваючою комою: вона встановлює значення 1 у всіх розрядах слова стану. Потрібно закінчувати командою EMMS будь-який фрагмент програми, у якому є MMX-команди. Якщо цього не робити, то
операції із плаваючою комою будуть давати невірні результати;
іноді в результаті операцій з плаваючою комою будуть генеруватися виключення типу Stack overflow.
“Фізичне” розташування ММХ-регістрів
MMX-команди використають вісім 64-розрядних регістрів. До регістрів забезпечується прямий доступ по іменах: MM0,..., MM7. Ніякі інші команди не можуть звертатися до цих регістрів. "Фізично" регістри технології MMX розміщені в мантисах регістрів із плаваючою комою (біти 0-63). Таким чином, при записі будь-якого значення в MMX-регістр це значення попадає в один з регістрів з плаваючою комою. При виконанні MMX-команд
всі біти порядку й знаковий біт у відповідному регістрі із плаваючою комою заповнюються одиницями (це біти 64-79)
все слово стану регістрів із плаваючої коми заповнюється нулями.
2. Синтаксис та використання команд множення.
MMX-команди множення попарно перемножують 16-розрядні слова операндів, що дає чотири 32-розрядних добутки. Команда pmaddwd складає перший добуток із другим, а третій із четвертим. Суми записуються в 32-розрядні слова вихідного операнда. Команда pmulhw записує в 16-розрядні слова вихідного операнда старші розряди кожного із чотирьох добутків, а pmullw - молодші розряди добутків.
pmaddwd MM2, MM4
pmulhw MM2, MM4
pmullw MM2, MM4
pmaddwd MM3, MM4Команда pmaddwd (циклическая арифметика)Команда pmaddwd попарно перемножає 16-розрядні слова зі знаком вхідного и вихідного операндів. Це дає чотири 32-розрядних результати. Перший результат додається до другого, а третій до четвертого. Сумми записуються в 32-розрядні слова вихідного операнда. Якщо всі слова на вході рівні 8000h, результатом буде 80000000h (це єдиний випадок, коли перемноження від’ємних чисел дає від’ємний результат). Вхідний операнд може знаходитися в MMX-регістрі або в пам’яті; Виходний операнд має знаходитися в MMX-регістрі.
MM2
7F80
7E01
80FF
777F
MM4
80FF
7F80
777F
0001
MM2
C0BF0080+3EC17F80=FF808000
С4B78781+1=С4B78780
Висновок: Під час виконання лабораторної роботи я освоїв синтаксис, та специфіку виконання MMX-команд множення. Зрозумів сенс використання команди EMMS, дізнався про “фізичне” розташування ММХ-регістрів.