Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Кафедра електронних
обчислювальних машин
Звіт
про виконання лабораторної роботи № 5
з курсу „ Архітектура комп’ютерів”
Тема:
Сумісність з попередніми програмами.
Виключення, що генеруються ММХ-командами.
Синтаксис та використання команд упаковки/розпаковки.
Львів – 2005
Сумісність з попередніми програмами
Технологія MMX розширює функціональні можливості процесорів архітектури Intel при повній сумісності з програмами для минулих поколінь процесорів. Все ПЗ, створене для раніше випущених процесорів, без жодних змін може виконуватися на MMX-процесорах.
MMX-команди "спілкуються" з ОС точно так, як і команди з плаваючою комою. Механізм збереження і відновлення стану обчислень з плаваючою комою застосований і для збереження (відновлення) стану програми, що використовує технологію MMX. Фактично технологія MMX не означає "нового" режиму роботи процесорів архітектури Intel: MMX-команди виконуються в тому ж режимі процесора, що і команди з плаваючою комою.
Виключення, що генеруються MMX-командами
MMX-команди ніколи не генерують арифметичні виключення. Але в результаті виконання цих команд можуть генеруватися переривання арифметики з плаваючою комою, якщо до виконання MMX-команди вже було згенеровано виключення "плаваючої" арифметики.
MMX команди можуть генерувати виключення по доступу до пам’яті.
Команди упаковки і розпаковки
MMX-команди упаковки перетворюють довгі елементи даних (16- і 32-розрядні слова) в більш короткі. Якщо вихідне значення "не поміщається" в короткому елементі даних, то відбувається "насичення" - результатом вважається граничне значення допустимого діапазону вихідного типу даних.
Команди розпаковки попарно об’єднують елементи даних з обох операндів в більш довгі елементи вихідного операнда. Цими командами можна користуватися для підвищення кількості значимих розрядів при обчисленнях.
Детально описати зміст заданих команд та результат їх виконання, якщо в
ММ1 : 7F80 7E01 80FF 777F , в ММ2 : 80FF 7F80 777F 0001, в ММ3 : 7FFF FFFF 80FF AA55.
11.
punpcklwd MM2, MM3
packsswb MM1, MM2
Команда
b
w
d
q
packss
packus
punpckh
punpckl
Команди packss__ (дані зі знаком, арифметика з насиченням)
Команди packss перетворюють довгі елементи даних (16- і 32-розрядні слова зі знаком) в більш короткі (байти чи 16-розрядні слова зі знаком). Якщо вихідне значення було за межами допустимого діапазону для вихідного типу даних, то результатом упаковки вважається найближче граничне значення діапазону.
Вхідний операнд може знаходитися в MMX-регістрі чи в пам’яті; Вихідний операнд повинен міститися в MMX-регістрі.
Приклад:
packsswb MM1, MM2 – перетворення з word в byte
MM1
7F80
7E01
80FF
777F
MM2
80FF
7F80
777F
0001
MM1
80
7F
7F
01
7F
7F
80
7F
Команди punpckl__
Команди punpckl попарно об’єднують вихідні елементи даних (байти, 16- чи 32-розрядні слова), що знаходяться в молодших 32 розрядах обох операндів. Отримані в результаті довші елементи даних записуються в вихідний операнд. Вихідні значення старших розрядів операндів на результат не впливають.
Вхідний операнд може міститися в MMX-регістрі або в пам’яті; Вихідний операнд повинен міститися в MMX-регістрі.
Приклад:
punpcklwd MM1, MM2 – перетворення з word в double word
MM2
80FF
7F80
777F
0001
MM3
7FFF
FFFF
80FF
AA55
MM2
80FF 7FFF
AA55 0001
Висновок: Виконуючи дану лабораторну роботу, я ознайомився з використанням команд технології MMX, зокрема команд упаковки і розпаковки.