2008-10-10 7 views
5

puedo restablecer CTRL de FPU registra con esto:¿Cómo puedo configurar y restaurar los registros FPU CTRL?

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

Pero ¿Cómo puedo guardar los registros actuales, y restaurarlos posteriormente?

Es de código .NET ..

Lo que estoy haciendo, es de Delphi llamar a una DLL de .NET como un módulo COM. Comprobando los registros Ctrl en delphi arrojan un valor, verificando con controlfp en el código .net da otro valor. Lo que necesito, es de esencial es hacer esto:

_controlfp(_CW_DEFAULT, 0xfffff); 

Así que mis cálculos de punto flotante en el código .NET no se estrella, pero desea restaurar la Ctrl registros al regresar.

¿Quizás no? ¿Tal vez Delphi los está restableciendo cuando es necesario? He escrito sobre este problema here.

Respuesta

7
uses 
    SysUtils; 

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

La misma función que utiliza para cambiarlas: _controlfp(). Si pasa una máscara de 0, el valor actual no se verá alterado, pero se devolverá , guárdelo y utilice una segunda llamada al _controlfp() para restaurarlo más tarde.

+0

buena idea, el problema es que no entendí qué poner en la máscara, etc., pero el método delphi Set8087CW fue muy agradable. – neslekkiM

+0

Sí ... No mencionaste que estabas usando Delphi, así que asumí C/C++. – Shog9

Cuestiones relacionadas