Программная модель процессора IntelPentium (IA-32). Программная модель – Регистры. Прикладная модель CPU, страница 6

Исключением из этого правила является особый случай IE, который достаточно часто не маскируется, предоставляя возможность выхода на обработчик прерываний.

В младших моделях математического сопроцессора (МСП) в регистре управления CW содержащем общий бит маски прерывания IEM с помощью которого маскированы все особые случаи.

Кроме масок особых случаев…

PC – Precision Control (управление точностью).

Задает точность представления результатов арифметических функций FPU:

00 – ОТ              32 бит

10 – ДТ              64 бит

11 – РТ              80 бит

Содержимое этого поля учитывается только при выполнении команд FADD, FSUB, FMUL, FDIV, FSQRT и их модификаций. Для остальных команд FPU используется формат РТ.

Замечание:

Использование уменьшенных форматов не увеличивает скорости выполнения операций в FPU. По умолчанию принято использование формата РТ.

RC – Rounding Control (управление округлением).

Округление выполняется по всех случаях, когда результат операции невозможно точно представить в формате приемника, т.е. когда имеет место особый случай PE (потеря/ошибка точности).

2х битное поле PC задает один из возможных стандартных способов округления:

00 – к ближайшему;

01 – к ближайшему меньшему (округление вниз, к «-∞»);

10 – к ближайшему большему (округление вверх, к «+∞»);

11 – округление к нулю (усечение);

(Сущность методов см. в конспекте машинной арифметики).

Метод округления к ближайшему принимается по умолчанию и пригоден для большинства приложений. Он обеспечивает наиболее точную (погрешность не более половины младшего разряда) и статистически не смещенную оценку результата (погрешность является знакопеременной).

Округление усечением используется в основном как поддержка целочисленной арифметики.

Метод округления вниз и вверх используется в основном в, так называемой, интервальной арифметике и позволяет определить верхнюю и нижнюю границы многоэтапного вычисления, когда промежуточные результаты нужно округлять.

Поле RC оказывает влияние только на выполнение арифметических команд.

Регистры указателя команды FIP

и указателя операнда FDP

FIP – Floating Instruction Pointer           регистры 48-и разрядные

FDP – Floating Data Pointer

Информация, содержащаяся в этих регистрах, предназначена только для обработки особых случаев, в связи с этим эти регистры иногда называют указателями особого случая.

Когда FPU выполняет численную команду, она автоматически сохраняет в этих регистрах адреса команды и её операнда (если он есть), а также первые 11 бит кода операции для R-режима.

RReal (реальный режим, для совместимости младших и старших моделей)

В принципе сохраняются 2 старших байта команды, причем 5 старших бит всех команд FPU кодируется одинаково (11011 – ESC, кодом под внешние операции).

При работе в P-режиме в качестве FIP сохраняются значения CS:EIP, а в качестве FDP сохраняются значения DS:EA.

Содержимое регистров FIP, FDP используется обработчиками прерываний FPU.

Система команд FPU

Общее число команд FPU по мнемоникам порядка 80-и.

Основные типы команд:

·  пересылки;

·  арифметические;

·  сравнения;

·  трансцендентные;

·  управления.

Команды пересылки данных:

1)  Загрузка   (FLD, FILD, FBLD);

Общий вид этих команд:

mem → ST(0)

ST(i) → ST(0)     только для FLD

Загрузка операнда предваряется декрементом поля TOP.

2)  Команды сохранения (FST(P), FIST(P), FBSTP);

ST(0) → mem

ST(0) → ST(i)      только для FST(P)

3)  Команда обмена (FXCH);

ST(0) → ST(i)

4)  Условная пересылка (FCMOVcc, cc – condition cod (код условия));

Действие команды:

ST(i) → ST(0), if cc=1

Мнемокоды cc и условия пересылки:

Мненокод

Условие

B

NB

E

NE

BE

NBE

U

NU

(Below)

(Non Below)

(Equal)

(Non Equal)

CF=1

CF=0

ZF=1

ZF=0

CF=1 или ZF=1

CF=0 и ZF=0

PF=1

PF=0

четность/

нечетность

5)  Загрузка констант;

const → ST(0)


FLDZ         (0)

FLD1          (1)

FLDPI        (π)

FLDL2T      ()

FLDL2E      ()

FLDLG2      ()

FLDLN2      ()

Арифметические команды: