З дисципліни «Системне програмування»




Скачати 145.32 Kb.
НазваЗ дисципліни «Системне програмування»
Сторінка1/2
Дата01.03.2014
Розмір145.32 Kb.
ТипДокументы
nauch.com.ua > Математика > Документы
  1   2

http://antibotan.com/ - Всеукраїнський студентський архів

Практичне заняття № 3

з дисципліни «Системне програмування»
Команди порівняння чисел.

У центральному процесорі команди умовних переходів виконуються відповідно до значень окремих бітів регістра прапорців процесора. У арифметичному співпроцесорі існують спеціальні команди порівнянь, за наслідками виконання яких, встановлюються біти кодів умов в регістрі стану:

FCOM - Порівняння

FICOM - Цілочисельне порівняння

FCOMP - Порівняння і вилучення зі стеку ST(0)

FICOMP - Цілочисельне порівняння і вилучення зі стеку

FCOMPP - Порівняння і подвійне вилучення зі стеку (ST(0), ST(1))

FTST - Порівняння операнда з нулем

FXAM - Аналіз операнда на тип числа (скінчене число, денормалізоване число, нуль, безкінечність,... )
Команда FCOM віднімає вміст операнда, розміщеного в оперативній пам’яті, від значення у вершині стеку ST(0). Результат віднімання нікуди не записується і покажчик вершини стеку ST не змінюється.

Позначимо операнд команди порівняння як "x". У наступній таблиці приведемо значення бітів кодів умови після виконання команди "FCOM x":


C3 = 0, C0 = 0

ST(0)> x

C3 = 0, C0 = 1

ST(0)< x

C3 = 1, C0 = 0

ST(0)= x

C3 = 1, C0 = 1

ST(0) і x непорівнювані

Остання комбінація виникає при спробі порівняння нечисел, невизначеностей або нескінченості, а також в деяких інших випадках.
Команда FICOM в якості операндів передбачає 16- або 32-розрядні числа, а в решті - аналогічна команді FCOM.

Команди FCOMP і FICOMP аналогічні, відповідно, командам FCOM і FICOM, за винятком того, що після виконання операнд вилучається зі стеку.

Команда FCOMPP виконує ті ж дії, що і FCOM, але вона після виконання вилучає зі стеку обидва операнди, що брали участь в порівнянні.

Команда FTST призначена для порівняння операнду з нулем. Після її виконання коди умов встановлюються згідно з таблицею:


C3 = 0, C0 = 0

ST(0)> 0

C3 = 0, C0 = 1

ST(0)< 0

C3 = 1, C0 = 0

ST(0)= 0

C3 = 1, C0 = 1

ST(0) і 0 непорівнювані

Команда FXAM аналізує вміст ST(0). Після її виконання встановлюються коди умов, згідно яких можна визначити знак числа, його скінченність або нескінченність, нормалізованість і т.д.

Біт C1 містить знак аналізованого числа: 0 -додатний, 1 – від’ємний.

За допомогою біта C0 можна визначити, є число скінченим або нескінченим: 0 - скінчене число, 1 - нескінчене.

Для скінчених чисел подальша класифікація може проводитися за вмістом кодів умов C2 і C3:



C3 = 0, C0 = 0

Ненормалізоване число

C3 = 0, C0 = 1

Нормалізоване число

C3 = 1, C0 = 0

Нульове число

C3 = 1, C0 = 1

Число денормалізоване


Аналогічно, для нескінчених чисел коди умов C2 і C3 мають наступні значення:


C3 = 0, C0 = 0

Нечисло

C3 = 0, C0 = 1

Нескінчене число

C3 = 1, C0 = 0

Порожнє число

C3 = 1, C0 = 1

Порожнє число


За допомогою команди "FSTSW AX" програма може переписати вміст регістра стану співпроцесора в регістр AX центрального процесора. Далі вміст регістра AH можна переписати в регістр прапорів центрального процесора за допомогою команди SAHF. Біти кодів умов співпроцесора відображаються (проектуються) на регістр прапорів центрального процесора так, щоб без додаткових дій, використовувати команди умовних переходів.
Наприклад, в наступному фрагменті програми виконується перехід до мітки error, якщо операнди непорівнювані:

.286

. . .

fcom

fstsw ах

sahf

je error
Трансцендентні команди.

Трансцендентні команди призначені для обчислення наступних функцій:

  • тригонометричні (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) одночасно
Команда FPTAN обчислює частковий тангенс ST(0), розміщуючи в стеку такі два числа x та у, що y/x = tg(ST(0)).

Після виконання команди число у розташовується в ST(0), а число x заноситься у вершину стеку (тобто записується в ST(1)). Аргумент команди FPTAN винен знаходиться в межах:

0 <= ST(0) <= pi/4

Користуючись знайденим значенням часткового тангенса, можна обчислити інші тригонометричні функції за наступними формулами:

sin(z)= 2*(y/x)/ (1 + (y/x)2)

cos(z)= (1 - (y/x) 2) / (1 + (y/x)2)

tg(z/2)= y/x;

ctg(z/2)= x/y;

cosec(z)= (1 + (y/x)2) / 2*(y/x)

sec(z)= (1 + (y/x)2) / (1 - (y/x) 2)

Де z - значення, що знаходилося в ST(0) до виконання команди FPTAN, x і у - значення в регістрах ST(0) і ST(1), відповідно.
Команда FPATAN обчислює частковий арктангенс:

z=arctg(ST(0) /ST(1))=arctg(x/y).

Перед виконанням команди числа x і у розташовуються в ST(0) і ST(1), відповідно. Аргументи команди FPATAN винен знаходиться в межах: 0 < у < x . Результат записується в ST(0).
Команда FYL2X обчислює вираз y*log2 (x), операнди x і у розміщуються, відповідно, в ST(0) і ST(1). Операнди вилучаються зі стеку, а результат записується в стек. Параметр x повинен бути додатнім числом.

Користуючись результатом виконання цієї команди, можна обчислити таким чином логарифмічні функції:

Логарифм за основою два: log2 (x)= FYL2(x)

Натуральний логарифм:

logе (x)= logе (2)* log2 (x)= FYL2X(logе (2), x)= FYL2X(FLDLN2, x)

Десятковий логарифм:

log10 (x)= log10 (2)* log2 (x)= FYL2X (log10 (2), x) = FYL2X(FLDLG2, x)
Функція FYL2XP1 обчислює вираз y*log2 (x+1), де x відповідає ST(0), а у - ST(1). Результат записується в ST(0), обидва операнди вилучаються зі стеку і втрачаються. На операнд x накладається обмеження: 0 < x < 1 - 1/sqrt(2)
Команда F2XM1 обчислює вираз 2x-1, де x - ST(0). Результат записується в ST(0), параметр повинен знаходиться в наступних межах: 0 <= x <= 0,5
Команда FCOS обчислює cos(x). Параметр x винен знаходиться в ST(0), туди ж записується результат виконання команди.
Команда FSIN аналогічна команді FCOS, але обчислює значення синуса ST(0).
Команда FSINCOS обчислює одночасно значення синуса і косинуса параметра ST(0). Значення синуса записується в ST(1), косинуса - в ST(0).
^ Команди керування.

Команди, керування, призначені для роботи з нечисловими регістрами співпроцесора. Деякі команди мають альтернативні варіанти. Мнемоніки цих команд можуть починатися з 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, але додатково відновлює вміст числових регістрів).

FINCSTP Збільшити покажчик стека SP на 1

FDECSTP Зменшити покажчик стека SP на 1

FFREE Звільнити регістр (визначає числовий регістр ST, вказаний як операнд, як порожній, записуючи у відповідне поле регістра тегів значення 11).

FNOP Пуста команда, немає операції (не робить жодних дій).

FSETPM Встановлює захищений режим роботи (переводить співпроцесор в захищений режим роботи).
Програмування співпроцесора.
При роботі в різних середовищах програмування, заснованих на мовах високого рівня (наприклад, Сі або Паскаль), під час створення проекту, як правило, надається можливість вибору одного з трьох варіантів стандартної бібліотеки:

  • бібліотека емулятора (втратила актуальність для процесорів сімейства Pentium, але частково стала знов актуальною після появи MMX);

  • бібліотека, що використовує арифметичний співпроцесор;

  • бібліотека альтернативної математики.


Перший варіант (бібліотека емулятора) використовується за замовчанням. Програми, які використовують бібліотеку емуляції, працюватимуть як за наявності в системі співпроцесора, так і за його відсутності. У останньому випадку обчислення з плаваючою крапкою виконуються спеціальними підпрограмами, які приєднуються до основної програми на етапі лінкування (що, зрозуміло, приводить до збільшення розмірів програми). Крім того, в код програми включається функція, що визначає наявність співпроцесора, яка при запуску програми визначить факт наявності (або відсутності) співпроцесора і вибере відповідний спосіб виконання обчислень - або з використанням співпроцесора, або з використанням підпрограм емуляції співпроцесора.

Другий варіант бібліотеки розрахований на наявність співпроцесора. Якщо співпроцесора немає, програма працювати не буде. Але якщо відомо, що співпроцесор є (наприклад, процесор Pentium завжди містить блок арифметики), то є сенс використовувати саме цей варіант як найбільш швидкодіючий (іноді, наприклад, при одночасному використанні інструкцій MMX і співпроцесора, щоб не уповільнювати роботу програми, для математичних обчислень буває вигідніше використовувати бібліотеку альтернативної математики).

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

На жаль, є програми, в яких використання бібліотеки емуляції неможливе або вкрай ускладнене:

резидентні програми;

драйвери;

програми, що мають жорсткі вимоги до точності і швидкості обчислень
У випадку з резидентними програмами неможливість використання бібліотеки емулятора викликана тим, що після залишення програми резидентною в пам’яті, наприклад, функцією _dos_keep, вона втрачає доступ до модулів емуляції. Механізм виклику програм емуляції заснований на використанні переривань з номерами 34h - 3Eh. Перш ніж залишити програму резидентною, функція _dos_keep відновлює вміст вказаних векторів переривань, роблячи неможливим доступ резидентній програмі до модулів емулятора. Та і самих цих модулів вже немає в пам’яті - на їх місце може бути завантажена нова програма. Тому в документації по програмуванні на мові Сі рекомендується для резидентних програм застосовувати бібліотеку альтернативної математики. Але ця бібліотека, не використовує співпроцесор.

Ситуація з драйверами аналогічна - драйвери, як правило, пишуться на мові асемблер, тому засоби емуляції бібліотек Сі недоступні. Виходом може бути безпосереднє програмування співпроцесора на мові асемблера. При цьому можна повністю використовувати всі можливості співпроцесора і досягти найбільшої ефективності обчислень.
  1   2

Схожі:

З дисципліни «Системне програмування» icon“Розробка системних програмних модулів та компонент систем програмування.”...
Метою виконання курсової роботи є закріплення теоретичних знань та практичних навичок системного програмування, набутих при вивченні...
З дисципліни «Системне програмування» iconЗ дисципліни «Системне програмування»
Він значно прискорює обрахунки, які пов’язані з дійсними числами. Співпроцесор може виконати як прості арифметичні операції (множення,...
З дисципліни «Системне програмування» iconНаціональний еколого-натуралістичний центр учнівської молоді
Програмування І комп'ютерні технології (системне програмування, комп'ютерні технології)
З дисципліни «Системне програмування» iconТестові запитання до курсу «Системне програмування та ос» Лектор...
Запитання: "Виділити системну область пам’яті для роботи з com-об'єктами І скопіювати в неї рядок"
З дисципліни «Системне програмування» iconЗасоби створення Java-програм
Методичні вказівки “програмування на java” до лабораторних робіт з дисципліни "Об`єктно– орієнтоване програмування" для базового...
З дисципліни «Системне програмування» icon«Проектування системи інтернет-магазину»
Курсовий проект з дисципліни "Програмування, частина Технологія системного програмування" являється підсумком вивчення даного предмету....
З дисципліни «Системне програмування» iconМетодичні рекомендації до виконання лабораторної роботи №4 з дисципліни...
Завдання нелінійного програмування в Microsoft Excel вирішуються так само як І задачі лінійного програмування, з тією лише різницею,...
З дисципліни «Системне програмування» iconОб’єктно – орієнтоване програмування
Студенти даного курсу повинні володіти мовою програмування с та С++ та засобами програмування не нижче Microsoft Visual Studio 6
З дисципліни «Системне програмування» icon1. Мета І предмет математичного програмування
Основні поняття математичного програмування. Побудова моделі задачі лінійного програмування
З дисципліни «Системне програмування» iconЗагальні рекомендації до вивчення дисципліни Навчально-методичні матеріали дисципліни
Теми та зміст дисципліни Сутність фінансового аналізу, його методи та прийоми
Додайте кнопку на своєму сайті:
Школьные материалы


При копіюванні матеріалу обов'язкове зазначення активного посилання © 2013
звернутися до адміністрації
nauch.com.ua
Головна сторінка