Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпаргалка.doc
Скачиваний:
111
Добавлен:
01.05.2014
Размер:
1.1 Mб
Скачать

3DNow! от amd

Появился дополнительный тип данных: упакованные 32 битные вещественные числа.

Появился дополнительный набор команд:

  • Преобразование целых чисел в вещественные и обратно;

  • Вычисления среднего арифметического для элементов/частей регистров;

  • Специальные вычисления по итерационным формулам.

Все команды начинаются с FP xxx , так как F (float) вещественный тип данных, а P – это MMX.

  1. Обработка чисел с плавающей запятой.

Применяется с использованием математического сопроцессора, который до i486 выполнялся в виде отдельной микросхемы (8087 – 80387).

Независимо от наличия сопроцессора, обработка может быть осуществлена тремя способами:

  1. Использование библиотеки эмулятора - автоматически определяет сопроцессор, если он есть, то все подстраивается под него, если нет, то будет эмулировать.

  2. При отсутствии библиотеки математического сопроцессора возникает прерывание и выполнение программы будет прервано.

  3. Использование библиотеки альтернативной математики - считается, что сопроцессор отсутствует.

Первый способ несовместим с резидентными программами (так как одни и те же прерывания используются для эмулятора и резидентных программ). Поэтому для таких программ надо использовать третий способ. Второй способ самый быстрый.

Назначение математического сопроцессора:

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

Np

Знач десятичных чисел

Диапазон

32 Короткое веществ

6 / 7

10-38 - 1037

64 Длинное веществ

15 / 16

10-308 - 10307

80 Расширенное веществ

18 / 19

10-4932 - 104931

Word Integer - 16 бит

Short Integer - 32 бит

Long Integer - 64 бит

Packed Decimal - 18 десятич цифр  10 байт (80 бит)

p m

Полож /отрицат бесконечность 01 | 1 … 1 00 … 0

Неопределенность 1 | 1 … 1 10 … 0

Не число 0 | 1 … 1  0

Сопроцессор представляется расширением центрального процессора с дополнительными восьмью восьмидесяти битными регистрами в виде аппаратного стека с номерами: st(0) – st(7) Для задания вершины стека используется регистр ST, который указывает на один из восьми регистров.

  1. Управляющие регистры:

SR (слова состоянием ) флаг условий, занятость сопроцессора, флаги ST.

CR – регистр управления, задает режим обработки (способы округления, точность и маскирование ошибок).

TW – теговый регистр содержит двух битовое поле для каждого из восьми регистров сопроцессора

TW i - st(i)

  1. вещественное число не равное нулю

  2. вещественно число равно нулю

10 не число

11 не ициализированно

Сопроцессор называется так потому – что может работать параллельно с процессором после инициализации. Языки высокого уровня используют его непосредственно, а ассемблер порождает ESC команды.

Система команд сопроцессора: F XXX

  1. Пересылки

FLD – загружает регистр сопроцессора из памяти (или из другого регистра).

FST – копирует содержимое регистра (сопроцессора, обычно из стека) в память или в другой регистр при этом аппаратный стек не меняется.

FSTP – аналогично FST только в конце выталкивает.

Загрузка констант: FLD1, FLDPi, . . .

  1. Арифметические команды выполняют четыре арифметических действия над всеми типами данных. Даже обработка целых чисел в сопроцессоре идет по принципу вещественных чисел.

  2. Элементарные функции: FSQRT, FABS, FSIN, FCOS, FPTAN, FPATAN, . . .

F2XM1 = 2­X – 1 FYL2X = Y * Log 2 X

  1. Команды управления.

При программировании обработки выражений в сопроцессоре, они представляются в виде польской инверсной записи (ПОЛИЗ или RPN – Reversed Polish Notation). Любое выражение преобразуется к постфиксному виду (бесскобочная запись).

Примеры: f:= (a + b) * pi – c

ab + pi * c – f :=

  1. f:= atan ( sqrt (x2 / (x2 - 1) )

xx * xx * 1 - / sqrt atan f :=

Для первого примера.

Data Segment

a DQ 2.5

b DQ 6.0

c DQ 3.5

f DQ ?

Data End

Code Segment

Assume cs : Code, ds : Data

Public f

Expression Proc Far

Fld a st(0)

Fld b st(1)

Fadd st(0) + st(1)  st(0)

Fld pi pi  st(1)

Fmnl st(0) * st(1)  st(0)

Fld c st(1)

Fsub st(0) – st(1)  st(0)

Fstp f f:= st(0); st(1)  st(0)

Ret

Expression EndP

Code EndS

Здесь и далее иллюстрации использования команд и описания процессов обработки приводятся на языке Ассемблера, краткие сведения по которому приведены в приложении 1.