О точности x87 FPU

В руководстве разработчика программного обеспечения Intel IA-32. В нем говорится, что бит 8 и 9 управляющего слова x87 FPU определяет точность вычислений с плавающей запятой. Точность по умолчанию - двойная расширенная точность. После выполнения инструкции «FINIT» точность устанавливается на двойное число с плавающей запятой. Проблема в том, что после выполнения «FINIT» x87 FPU использует для вычислений только 64 бита из 80-битных регистров данных. И FPU не может принимать (выводить) плавающее значение двойной расширенной точности из (в) памяти. Это правильно?


person Gary Yin    schedule 22.12.2013    source источник


Ответы (1)


Нет, это не так. FPU автоматически преобразуется из 64-битного в 80-битный при загрузке / сохранении в памяти.

person Robin Green    schedule 22.12.2013
comment
Спасибо. Тогда какова цель контроля точности? Что он используется для контроля? - person Gary Yin; 22.12.2013
comment
Для контроля промежуточной точности. Это полезно, если вы хотите воспроизводимого поведения. - person Robin Green; 22.12.2013
comment
Контроль точности выбирает, сколько цифр вычисляет внутреннее устройство FPU. Снижение точности ускоряет вычисления FPU (или, по крайней мере, используется) и позволяет точно эмулировать 64-битный или 32-битный FPU с FPU x87 без необходимости постоянно хранить и перезагружать его регистры, чтобы избавиться от битов дополнительной точности. - person fuz; 09.07.2018