Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Кафедра ЕОМ
Звіт
Системне програмування
ЛАБОРАТОРНА РОБОТА № 4
ПРОГРАМУВАННЯ СПІВПРОЦЕСОРА З ВИКОРИСТАННЯМ КОМАНД ОБЧИСЛЕННЯ ТРАНСЦЕНДЕНТНИХ ФУНКЦІЙ ТА РЕАЛІЗАЦІЯ РОЗГАЛУЖЕНЬ ПРИ ПОРІВНЯННІ ДАНИХ ДІЙСНОГО ТИПУ
Львів 2012
Мета: познайомитися з принципами роботи математичного співпроцесора і використати його можливості для обчислення трансцендентних функцій та реалізації розгалужень.
Теоретичні відомості
Команди порівняння чисел
У центральному процесорі команди умовних переходів виконуються відповідно до значень окремих бітів регістра прапорців процесора. У арифметичному співпроцесорі існують спеціальні команди порівнянь, за наслідками виконання яких, встановлюються біти кодів умов в регістрі стану:
FCOM - Порівняння
FICOM - Цілочисельне порівняння
FCOMP - Порівняння і вилучення зі стеку ST(0)
FICOMP - Цілочисельне порівняння і вилучення зі стеку
FCOMPP - Порівняння і подвійне вилучення зі стеку (ST(0), ST(1))
FTST - Порівняння операнда з нулем
FXAM - Аналіз операнда на тип числа (скінчене число, денормалізоване число, нуль, безкінечність,... )
Трансцендентні команди
Трансцендентні команди призначені для обчислення наступних функцій:
тригонометричні (sin, cos, tg...)
зворотні тригонометричні (arcsin, arccos...)
показникові (xy , 2x , 10x , ex )
гіперболічні (sh, ch, th...)
зворотні гіперболічні (arsh, arch, arcth...)
Ось список всіх трансцендентних команд математичного співпроцесора:
FPTAN Обчислення часткового тангенса
FPATAN Обчислення часткового арктангенса
FYL2X Обчислення y*log2(x)
FYL2XP1 Обчислення y*log2(x+1)
F2XM1 Обчислення 2x-1
FCOS Обчислення cos(x)
FSIN Обчислення sin(x)
FSINCOS Обчислення sin(x) і cos(x) одночасно
Команди керування
Команди, керування, призначені для роботи з нечисловими регістрами співпроцесора. Деякі команди мають альтернативні варіанти. Мнемоніки цих команд можуть починатися з FN або F. Перший варіант відповідає командам "Без очікування". Для таких команд процесор не перевіряє, чи зайнятий співпроцесор виконанням команди, тобто біт зайнятості B не перевіряється. Особливі випадки також ігноруються.
Варіанти команд "З очікуванням" діють так само, як і звичайні команди співпроцесора.
Ось список команд керування для співпроцесора:
FNSTCW (FSTCW) Записати управляюче слово (записує вміст регістра управління в оперативну пам’ять).
FLDCW Завантажити управляюче слово (завантажує регістр управління з оперативної пам’яті і, як правило, використовується для зміни режиму роботи співпроцесора).
FNSTSW (FSTSW) Записати слово стану (записує вміст регістра стану в оперативну пам’ять).
FNSTSW AX (FSTSW AX) Записати слово стану в AX (записує вміст регістра стану в регістр AX центрального процесора, де можливий аналіз вмісту за допомогою команд умовних переходів).
FNCLEX (FCLEX) Скинути особливі випадки (скидає прапорці особливих випадків в регістрі стану співпроцесора, також скидаються біти ES і B).
FNINIT (FINIT) Ініціалізувати співпроцесор (ініціалізує регістр стану, регістр управління, і регістр тегів таким чином:
Регістр управління - Проектна нескінченість, округлення до найближчого, розширена точність, всі особливі випадки замасковані
Регістр стану - B=0 (біт зайнятості скинутий), код умови не визначений, ST=ES=0, прапорці особливих випадків встановлені в нуль
Регістр тегів - Всі поля регістра тегів містять значення 11 (порожній регістр)).
FNSTENV (FSTENV) Записати оточення (записує в пам’ять вміст всіх регістрів, окрім числових, у визначеному форматі. Команда корисна при обробці особливих випадків).
FLDENV Завантажити оточення (завантажує регістри, збережені командою FNSTENV).
FNSAVE (FSAVE) Записати повний стан (діє аналогічно команді FNSTENV, але додатково зберігає вміст числових регістрів).
FRSTOR Відновити повний стан (діє аналогічно команді FLDENV, але додатково відновлює вміс...