
- •Система команд fpu
- •Задание.
- •Лабораторная работа № 8 Вычисления с использованием математического сопроцессора
- •Задание.
- •Лабораторная работа № 9 Представление данных в математическом сопроцессоре
- •Особые случаи
- •1. Неточный результат
- •2. Численное антипереполнение или исчезновение порядка
- •3. Денормализованный операнд
- •4. Деление на нуль
- •5. Численное переполнение
- •6. Недействительная операция
- •Задание.
- •Литература
Задание.
Составить программу для FPU с минимальным количеством обращений к ОЗУ, для вычислений по формуле, приведенной в табл. 8.6 в соответствии с вариантом задания. В отчете, кроме варианта задания и текста программы, указать в качестве комментария значение вершины стека после выполнения каждой команды.
Таблица 8.6. Варианты заданий к лабораторной работе №8
№ вар. |
Вычислить |
При исходных данных |
1 |
|
a =12; b =26; x =8 |
2 |
|
а =10; b =14; с =19 |
3 |
|
x =28; y =18; z =13 |
4 |
|
x =21; y =20; z =16 |
5 |
|
f =31; g =22; h =14 |
6 |
|
p =11; m =20; q =9 |
7 |
|
а =29; b =14; с =17 |
8 |
|
x =7; y =14; z =15 |
9 |
|
r =9; t =12; f =18 |
10 |
|
а =17; b =16; с =11 |
11 |
|
k =7; m =12; n =14 |
12 |
|
f =12; g =21; h =17 |
13 |
|
а =14; b =16; с =18 |
14 |
|
а =8; b =11; с =9 |
15 |
|
x =17; y =18; z =23 |
Лабораторная работа № 9 Представление данных в математическом сопроцессоре
Все данные, которые обрабатываются на ЭВМ, имеют определенную область допустимых значений. Это относится к целым числам для центрального процессора (ЦП) и вещественным для FPU.
Внутреннее представление чисел в FPU – 80-битное представление с расширенной точностью. Нормализованным здесь является число, у которого в целом разряде единица, причем этот разряд в мантиссе представлен явно. Но для сокращения объема используемой памяти и соответствия стандарту IEEE854, в памяти вещественные числа так же могут храниться с одинарной (4 байта) и двойной (8 байт) точностью. Кроме этого, данные можно хранить и как целые двоичные, и как целые десятичные двоично-кодированные, см. рис. 9.1-9.3.
Одинарная |
31 |
8 бит |
23 бита |
0 |
|
точность |
S |
Порядок |
Мантисса |
4 байта |
|
|
|
|
|
|
|
Двойная |
63 |
11бит |
52 бита |
0 |
|
точность |
S |
Порядок |
Мантисса |
8 байт |
|
|
|
|
|
|
|
Расширенная |
79 |
15 бит |
64 бита |
0 |
|
точность |
S |
Порядок |
Мантисса |
10 байт |
Рис. 9.1. Форматы вещественных чисел.
Разряд знака числа (поля мантиссы) находится в самом старшем разряде. Порядок представлен с фиксированным смещением, разным для разных представлений точности: 127, 1023 или 16383 (в десятичной системе счисления). Мантисса для одинарной и двойной точности имеет скрытый бит: единица в старшем разряде только указывается, но не хранится. При этом точность представления числа увеличивается на один двоичный разряд. Для расширенной точности старший бит мантиссы указывается явно.
Таким образом, значения чисел с плавающей точкой следующие:
(-1)S (1.b1b2…b23) 2 (E-127) (одинарная точность)
(-1)S (1.b1b2…b52) 2 (E-1023) (двойная точность)
(-1)S (b1.b2b3…b64) 2 (E-16383) (расширенная точность)
где S – значение, находящееся в знаковом бите (0/1);
b1…bn – биты поля мантиссы;
Е – значение поля порядка.
15 |
0 |
|
S |
Дополнительный код |
2 байта: целое число |
31 |
0 |
|
S |
Дополнительный код |
4 байта: короткое целое |
63 |
0 |
|
S |
Дополнительный код |
8 байт: длинное целое |
Рис. 9.2. Форматы целых двоичных чисел.
При записи в ОЗУ или загрузке происходит преобразование из вещественного в целое (или наоборот) в соответствии с режимом округления. Число хранится в памяти со знаком в дополнительном коде.
79 |
7 бит |
72 бита |
0 |
|
|||
S |
0000000 |
d17 |
d16 |
… |
d1 |
d0 |
10 байт |
|
|
|
|
по 4 бита |
|
|
|
Рис. 9.3. Формат целого десятичного числа.
Десятичные числа представлены как двоично-кодированные, упакованные (BCD): по тетраде на один десятичный разряд. В десяти байтах находится 18 десятичных разрядов целой части числа.
Все форматы чисел, поддерживаемых сопроцессором при хранении в ОЗУ в нормализованном виде, представлены в табл. 9.1.
Таблица 9.1. Форматы чисел, поддерживаемых FPU
Тип |
Длина, бит |
Точность, разрядов |
Диапазон |
||
Двоичная |
Десятичная |
Двоичный |
Десятичный |
||
Вещественные числа |
|||||
Одиночные (single) |
32 |
24 |
7 |
2-126…2127 |
1.18·10-38… 3.4·1038 |
Двойные (double) |
64 |
53 |
15-16 |
2-1022…21023 |
2.23·10-308… 1.79·10308 |
Расширенные (extended) |
80 |
64 |
19 |
2-16382…216383 |
3.37·10-4932… 1.18·104932 |
Двоичные целые числа |
|||||
Слова (word) |
16 |
15 |
4 |
-215…215-1 |
-32768…32767 |
Короткие (short) |
32 |
31 |
9 |
-231…231-1 |
-2.14·109… 2.14·109 |
Длинные (long) |
64 |
63 |
18 |
-263…263-1 |
-9.22·18… 9.22·1018 |
Упакованное двоично-десятичное целое число |
|||||
BCD |
80 |
|
18 |
- |
-1018+1…1018-1 |