- •2. Структура регістра eflags
- •3. Організація оперативної пам’яті. Сегментована модель оперативної пам’яті. Формування адреси в реальному режимі
- •4. Формати і типи даних. Формат машинних команд. Система переривань
- •5. Десяткова арифметика. Форми зображення десяткових чисел
- •7. Ділення ascii-чисел.
- •6. Директиви сегментації. Директиви proc і endp
- •7. Опис простих типів мовою асемблера
- •10. Синтаксис команд мовою асемблера
- •11. Команди передач даних
- •Xchg ax, data1; (data2) в data1, (ax) – початковий стан
- •12. Стекові передачі даних
- •13. Передачі адресних об’єктів, команди введення-виведення і передачі прапорців
- •14. Команди передачі даних movXx. Команда setCc. Команда xlat
- •15. Команди додавання, віднімання і порівняння
- •Inc reg/mem; Розмір 8/16/32.
- •16. Команди множення і ділення
- •20. Команди логічних операцій. Команди зсувів
- •22. Команди операцій з двійковими ланцюжками
- •23. Команди передачі керування (безумовні переходи)
- •24. Команди умовних переходів і команди керування циклами
- •26. Команди переривань і повернення з переривань
- •Загальні поняття.
- •Використання префіксів в ланцюжкових командах.
- •Команда movs.
- •Команда cmps.
- •Команда scas.
- •Команда lods.
- •Команда stos.
- •Команди введення/виведення ланцюжків.
- •29. Команди керування процесором
- •Команди, які впливають на прапорці.
- •Команди синхронізації.
- •Системні команди
- •31. Формати даних, які підтримуються fpu
- •Параметри для трьох форматів в таблиці
- •32. Програмна модель fpu
- •33. Слово стану sw і слово керування cw пристрою fpu.
- •Відповідність між кодом умови і прапорцями
- •34. Команди передач даних fpu: завантаження, збереження, збереження з вибором зі стека, обміну, завантаження сталих.
- •35. Арифметичні команди fpu: додавання, віднімання, множення, ділення.
- •36. Додаткові арифметичні команди fpu.
- •37. Команди порівняння fpu
- •38. Команди трансцендентних функцій. Алгоритми обчислення значень функцій і та логарифмів за будь-якою основою.
- •39. Команди керування пристроєм fpu
- •40. Спеціальні числові значення та особливі обчислювальні ситуації
39. Команди керування пристроєм fpu
Команд керування пристроєм є не так багато. Одна з них, , використовується для умовного переходу. Інші команди в обчисленнях майже не використовуються і призначені для керування FPU на системному рівні. Багато команд мають альтернативні мнемоніки, другою буквою яких є буква , яка означає – не очікувати. Наявність цієї букви полягає в тому, що відповідна команда не перевіряє незамасковані особливі випадки і виконується негайно. Тоді транслятор не вставляє перед нею команду , тому перед її виконанням FPU не перевіряє наявність особливих випадків з плаваючою крапкою.
Усі інші команди з плаваючою крапкою процесор синхронізує автоматично; всі операнди передаються до ініціалізації наступної команди. Тому для правильного виконання команд, завдяки автоматичній синхронізації, не потрібна попередня команда .
Синхронізація ж особливих випадків ґрунтується на використанні команди . Оскільки цілочисловий пристрій і FPU працюють паралельно, то можливо, що особливий випадок з плаваючою крапкою зруйнує важливу інформацію до виклику обробника особливого випадку. Застосування команди у потрібному місці дозволяє уникнути такої ситуації.
Команда ініціалізації FPU:
;
;
;
; ;
; ; .
– (заокруглення до найближчого, всі особливі випадки замасковані, максимальна 64-бітова точність). Слово стану , – вершина стека. Всі регістри стека визначені порожніми. Вказівники помилки (команди і даних) установлені в нуль. Першою командою після вмикання живлення має бути команда . Команда перед виконанням ініціалізації контролює помилки з плаваючою крапкою, – не контролює.
Команда – завантажує в новий вміст з (це повинно бути ціле слово в оперативній пам’яті). Відзначимо, якщо в установлено будь-який прапорець особливого випадку, то завантаження нового слова керування може призвести до формування особливого випадку перед виконанням наступної команди. Тому рекомендується перед завантаженням нового значення слова керування установити в нуль прапорці в .
Команди і – зберігають і в оперативній пам’яті або в регістрі . Команди і контролюють наявність особливих випадків, на відміну від команд і .
Команда – в слові стану установлює в нуль прапорці особливих випадків біти від 0 до 7 (, та ) і (біт 15). Дану команду має виконати процедура обробки особливого випадку перед поверненням в перервану програму, інакше буде сформоване нове переривання (яке можливо тільки що аналізувалося). Присутність або відсутність параметра-букви означає, як і в попередніх командах, контролює або не контролює відповідно команда особливий випадок перед своїм виконанням. Надалі цей факт притаманний усім командам, в яких може бути цей параметр.
Команда – зберігає поточний повний стан FPU в приймачі , а потім установлює початковий його стан (як і команда ). Операнд – 94-байтовий для і 108-байтовий для . Команди і не зберігають стан FPU до призупинення всіх його дій. Якщо програма повинна читати образ стану після команди збереження, потрібно використати команду , що забезпечує коректне завершення збереження.
Команда – перезавантажує стан FPU з області оперативної пам’яті. Ці дані повинні були бути записані раніше командою або і не повинні модифікуватися іншими командами. Якщо образ стану має незамаскований особливий випадок, його завантаження даною командою зумовлює особливий випадок.
Команди і – зберігають поточне середовище в , а потім маскують всі особливі випадки з плаваючою крапкою. Поточне середовище: і вказівники помилок (даних і команди). Ці команди не зберігають середовище до призупинення всіх дій FPU.
Команда – перезавантажує середовище FPU з області оперативної пам’яті .
Команди і – відповідно виконують інкремент і декремент вказівника стека і не передають ніяких даних. Регістр попередньої вершини стека при виконанні команди не змінюється і не відзначається як порожній, тобто дія цієї команди не еквівалентна вилученню зі стека. Команда виконує ніби запис у стек, але дане, яке записується відсутнє, регістр тегів не змінюється.
Команда – записує в тег вказаного регістра , тобто відзначає регістр як порожній, але вміст регістра і вказівник стека не змінюються.
Команда – заставляє FPU перед продовженням обчислень перевірити незамасковані особливі випадки, які очікують аналізу програмами – обробниками особливих випадків.
Команда – є порожньою командою, яка не виконує ніяких дій.
Наведемо таблицю команд керування FPU.
№ п/п |
Мнемоніка |
Операція |
1 |
Ініціалізація FPU |
|
2 |
Завантаження слова керування |
|
3 |
|
Збереження слова керування |
4 |
Збереження слова стану |
|
5 |
Установити в нуль прапорці ОВ в |
|
6 |
Завантаження середовища |
|
7 |
Збереження середовища |
|
8 |
Збереження повного стану |
|
9 |
Відновлення повного стану |
|
10 |
|
Інкремент |
11 |
Декремент |
|
12 |
Звільнення регістра |
|
13 |
Порожня команда |
|
14 |
Команда очікування |