Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаб2.docx
Скачиваний:
4
Добавлен:
07.07.2019
Размер:
34.72 Кб
Скачать
  1. Скільки нових інструкцій додано до архітектури процесору Pentium mmx? На які групи вони поділяються?

Команди MMX поділяються на наступні групи:

- EMMS

- Команди додавання і віднімання

- Команди зсуву

- Логічні команди

- Команди множення

- Команди порівняння

- Команди пакування/розпакування

- Команди передачі даних

Команди додавання і віднімання (padd, padds, paddus, psub, psubs, psubus) можуть діяти на знакові і беззнакові запаковані байти i слова і на знакові запаковані подвійні слова. Інструкції додавання і віднімання можуть використовувати арифметику насичення або арифметику переносу.

Команди зсуву (psll, psra, psrl) переміщують кожний елемент даних в операнді призначення на значення, визначене в початковому операнді.

Логічні команди (pand, pandn, por, pxor) виконують порозрядні логічні операції на 64 бітах.

Команди множення діють на 16-розрядні дані і продукують знакові 32-розрядні добутки.

Інструкція pmadd запам'ятовує суму добутків в 32-розрядних подвійних словах регістра призначення.

Інструкції pmulhw і pmullw запам'ятовують старші чи молодші біти добутків в 16-розрядних словах регістру призначення.

Команди порівняння (pcmpeq, pcmpgt) порівнюють елементи (байти, слова, або подвійні слова) даних в початкових операндах і операндах призначення.

Якщо порівняння відповідає дійсності, маска з усіх одиниць записується до елемента відповідних даних в регістрі призначення. В інакшому разі генерується маска з нулів.

Подібно всім інструкціям MMX, інструкції порівняння не встановлюють прапори.

Команди пакування (packss, packus) пакують більші елементи даних (слова або подвійні слова) до менших елементів даних. Елементи даних, які не пристосовуються до меншого типу даних, насичуються до значення границі областіданих.

Команди розпакування (punpckh, punpckl) копіюють і перемішують елементи (байти, слова або подвійні слова) джерела даних і операнду призначення. Ви можете використовувати команди розпакування, щоб збільшити точність фіксування елемента даних.

Використовуйте команди передачі даних (movd, movq) для:

- копіювання даних до і від регістрівMMX.

- копіювання даних від MMX регістра до пам'яті або з пам'яті до регістраMMX.

- копіювання даних від MMX регістра до цілочисленого регістра цілого числа або від цілочисленого регістра до регістра MMX (тільки movd).

Команди передачі даних є єдиними командамиMMX, які можуть мати адресу пам'яті, як операнд призначення. Тільки movd може мати операндом цілочислений регістр

7. Призначення інструкції EMMS.

Стан MMX є "приєднаним" до стану плаваючої крапки. Таким чином, всі інструкції (крім EMMS) MMX роблять недійсним слово ознаки плаваючої крапки під час свого виконання. Інструкція EMMS очищає стан MMX за допомогою установки слова ознаки плаваючої крапки до дійсного (всі одиниці).

Ви повинні використовувати інструкцію EMMS в кінці кожної послідовності коду MMX! Якщо ви не зробите цього, то:

- будуть спродуковані некоректні результати з плаваючою крапкою.

- можуть генеруватися виключення плаваючої крапки, як, наприклад надлишок стека. Це може викликати велике зменшення в продуктивності.

Подивіться на малюнок. Зверху, movq слідує негайно за викликом підпрограми плаваючої крапки. Це результат надлишку стека плаваючої крапки. Знизу, де використовується EMMS, немає надлишку стека