Почему и когда нужно назвать _fpreset ()?

Единственная документация, которую я могу найти (на MSDN или иначе) то, что вызов к _fpreset() "сбрасывает пакет с плавающей точкой". Каков "пакет с плавающей точкой?" Это также очищает слово состояния FPU? Я вижу документацию, в которой говорится для вызова _fpreset() когда восстановление с SIGFPE, но не делает _clearfp() это также? Я должен назвать обоих?

Я работаю над приложением, которое размаскировало некоторые исключения FP (использование _controlfp()). Когда я хочу сбросить FPU к состоянию по умолчанию (скажите при вызове в код.NET), должен я просто звонить _clearfp(), _fpreset(), или оба. Это - производительность критический код, таким образом, я не хочу называть обоих, если я не имею к...

5
задан N 1.1 26 March 2010 в 03:35
поделиться

1 ответ

_fpreset () сбрасывает состояние модуля с плавающей запятой. Он сбрасывает точность FPU на значение по умолчанию , а очищает слово состояния FPU. Два случая, когда я вижу, чтобы использовать его, - это при восстановлении из FPE (как вы сказали) и при возвращении управления из кода библиотеки (например, DLL, над которой вы не контролируете), который каким-либо образом прикрутил FPU, например, изменение точность.

3
ответ дан 15 December 2019 в 06:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: