- •5. Модель программирования с плавающей точкой.
- •5.1. Форматы и типы данных
- •5.1.1. Типы действительных чисел
- •5.1.2. Формат регистра с плавающей точкой
- •5.1.3. Представление значений в регистрах с плавающей точкой
- •5.2. Регистр состояния с плавающей точкой
- •5.3. Инструкции с плавающей точкой
- •5.3.1. Инструкции доступа к памяти
- •5.3.3. Арифметические инструкции
- •5.3.2. Инструкции обмена между регистрами с плавающей точкой и основными регистрами
- •5.3.4. Неарифметические инструкции
- •5.3.5. Инструкции поля состояния для регистра состояния с плавающей точкой (fpsr)
- •5.3.6. Инструкции целочисленного умножения и сложения
- •5.4. Дополнительные обсуждения в связи с ieee
- •5.4.1. Прерывания с плавающей точкой
- •5.4.1.1. Ошибка: Недоступный регистр с плавающей точкой
- •5.4.1.2. Ошибка: Исключение с плавающей точкой
- •5.4.1.3. Ловушка «Исключение с плавающей точкой»
- •5.4.2. Определение Переполнения
- •5.4.3. Определение Крошечности, Неточности и Антипереполнения.
- •5.4.4. Целочисленные неверные операции
- •5.4.5. Определение целочисленных операций
- •5.4.6. Определение и распространение значений.
- •5.4.7. Операции, предписанные стандартом ieee, отложенные программно
- •5.4.8. Дополнения сверх стандарта ieee
5.4.4. Целочисленные неверные операции
Преобразование числа с плавающей точкой в целочисленное, являющееся ошибочным (в смысле IEEE) отмечает ошибку «Исключение: Неверная операция с плавающей точкой». Если IEEE ловушка «Неверная операция» запрещена, то результатом является наибольшее (по абсолютной величине) отрицательное целочисленное значение, даже для целочисленных операций без знака.
5.4.5. Определение целочисленных операций
Арифметические операции, работающие с операндами, обрабатывают код каждого операнда как значение, тогда как не арифметические операции выполняют манипулирование битами входных операндов без связи со значениями представляемыми кодами (если только не обнаружено значение NaTVal). Не арифметические инструкции не вызывают ошибки и ловушки «Исключения с плавающей точкой», но могут вызвать ошибку «Недоступный регистр с плавающей точкой».
5.4.6. Определение и распространение значений.
Сигнальные значения NaN имеют нули в старшем дробном бите мантиссы. Тихие NaN имеют единицы в старшем дробном бите мантиссы. Это определение сигнальных и тихих значений NaN легко сохраняет «NaN’овость», при преобразованиях между различными точностями. При распространении значений NaN в операциях, которые имеют более одного операнда со значением NaN, результат NaN выбирается из одного операнда со значением NaN в следующем порядке приоритета, основанном на кодовых полях регистра: сначала f4, затем f2 и наконец f3.
5.4.7. Операции, предписанные стандартом ieee, отложенные программно
Следующие операции, предписанные стандартом IEEE, будут реализованы программно:
Преобразование строки в число с плавающей точкой
Преобразование числа с плавающей точкой в строку
Деление (с помощью инструкций frcpa и fprcpa)
Вычисление квадратного корня (с помощью инструкций frsqrta и fpsqrta)
Вычисление остатка (с помощью инструкций frcpa и fprcpa)
Преобразование значения с плавающей точкой в целочисленное значение
Корректная свертка порядка для переполнения и антипереполнения значения с одинарной, двойной или двойной расширенной точностью, как это рекомендовано стандартом IEEE
5.4.8. Дополнения сверх стандарта ieee
Объединенные операции умножения и сложения (fma, fms, fnma, fpma, fpms, fpnma), допускающие эффективные программные алгоритмы деления, вычисления остатка и квадратного корня.
Расширенный диапазон 17-битового порядка в формате регистра позволяет упростить выполнение многих основных цифровых алгоритмов, осторожным цифровым программистам
NaTVal – это естественное расширение IEEE концепции значений NaN. Оно используется для спекулятивных вычислений.
Режим FTZ (стремления к нулю) – это дополнительный индустриальный стандарт.
Инструкции минимума и максимума позволяют эффективно выполнять внутренние функции Фортрана: MIN(), MAX(), AMIN(), AMAX(), а также идиомы языка С, такие как a<b?a:b.
Разрешены все смешанные операции точности. Поддерживается предложение стандарта IEEE, чтобы обработка операндов низкой точности позволяла получать результат высокой точности. Но, не поддерживается предложение стандарта IEEE, чтобы обработка операндов высокой точности не позволяла получать результат низкой точности. Если вычисления с операндами высокой точности привели к результату выходящему за диапазон точности приемника, то в поле ISR.code обеспечивается информация, позволяющая программе однозначно определить истинный результат. Также могут быть вычислены, корректный счетчик свертки и соответствующее количество смещений.
Программно поддерживается вещественный тип с четверной точностью в стиле IEEE.
---- Нет рис.5.4-5.9 и 5.12 ---
