我可以用这个重置 FPU 的 CTRL 寄存器:
http://support.microsoft.com/kb/326219
但是我怎样才能保存当前的寄存器,然后再恢复它们呢?
它来自.net代码..
我正在做的是从 Delphi 调用 .net dll 作为 COM 模块。检查Ctrldelphi 中的寄存器会产生一个值,使用 .net 代码中的 controlfp 检查会产生另一个值。我需要的,本质上是这样做:
_controlfp(_CW_DEFAULT, 0xfffff);
所以我在.net代码中的浮点计算不会崩溃,但我想Ctrl在返回时恢复寄存器。
也许我没有?也许德尔福在需要时重置它们?我在这里写了关于这个问题的博客。