- •5. Модель программирования с плавающей точкой.
- •5.1. Форматы и типы данных
- •5.1.1. Типы действительных чисел
- •5.1.2. Формат регистра с плавающей точкой
- •5.1.3. Представление значений в регистрах с плавающей точкой
- •5.2. Регистр состояния с плавающей точкой
- •5.3. Инструкции с плавающей точкой
- •5.3.1. Инструкции доступа к памяти
- •5.3.2. Инструкции обмена между регистрами с плавающей точкой и основными регистрами
- •5.3.3. Арифметические инструкции
- •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 ---