nes*_*kiM 5 .net delphi fpu ctrl
我可以用这个重置FPU的CTRL寄存器:
http://support.microsoft.com/kb/326219
但是如何保存当前寄存器并在以后恢复呢?
它来自.net代码..
我正在做的是,Delphi将.net dll称为COM模块.检查Ctrldelphi中的寄存器会产生一个值,使用.net代码中的controlfp检查会产生另一个值.我需要的是,必须做到这一点:
_controlfp(_CW_DEFAULT, 0xfffff);
Run Code Online (Sandbox Code Playgroud)
所以.net代码中的浮点计算不会崩溃,但我想Ctrl在返回时恢复寄存器.
也许我没有?也许Delphi在需要时重置它们?我在这里写了关于这个问题的博客.
uses
SysUtils;
var
SavedCW: Word;
begin
SavedCW := Get8087CW;
try
Set8087CW($027f);
// Call .NET code here
finally
Set8087CW(SavedCW);
end;
end;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1638 次 |
| 最近记录: |