当前位置:  开发笔记 > 编程语言 > 正文

如何设置和恢复FPU CTRL寄存器?

如何解决《如何设置和恢复FPUCTRL寄存器?》经验,为你挑选了2个好方法。

我可以用这个重置FPU的CTRL寄存器:

http://support.microsoft.com/kb/326219

但是如何保存当前寄存器并在以后恢复呢?

它来自.net代码..

我正在做的是,Delphi将.net dll称为COM模块.检查Ctrldelphi中的寄存器会产生一个值,使用.net代码中的controlfp检查会产生另一个值.我需要的是,必须做到这一点:

_controlfp(_CW_DEFAULT, 0xfffff); 

所以.net代码中的浮点计算不会崩溃,但我想Ctrl在返回时恢复寄存器.

也许我没有?也许Delphi在需要时重置它们?我在这里写了关于这个问题的博客.



1> Jim..:
uses
   SysUtils;

var
   SavedCW: Word;
begin
   SavedCW := Get8087CW;
   try
     Set8087CW($027f);
     // Call .NET code here
   finally
     Set8087CW(SavedCW);
   end;
end;



2> Shog9..:

用于改变它们的相同功能:_controlfp().如果传入0的掩码,则不会更改当前值,但返回 - 保存它,并使用第二次调用以便_controlfp()稍后恢复.

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有