كيف يمكنني ضبط واستعادة سجلات FPU CTRL؟
سؤال
ويمكنني إعادة تعيين CTRL FPU ليسجل مع هذا:
http://support.microsoft.com/kb/326219
ولكن كيف يمكنني حفظ السجلات الحالية، واستعادتها لاحقا؟
وانها من التعليمات البرمجية صافي ..
ما أفعله، هو من دلفي استدعاء دلل صافي باعتبارها وحدة COM. التحقق من السيطرة السجلات في العائد دلفي قيمة واحدة، والتحقق مع controlfp في رمز صافي يعطي قيمة أخرى. ما احتاج اليه، هو في غنى هو أن تفعل هذا:
_controlfp(_CW_DEFAULT, 0xfffff);
وهكذا حساباتي floatingpoint في رمز .NET لا يتعطل، ولكن أريد أن استعادة السيطرة السجلات عند عودته.
وربما أنا لا؟ ربما دلفي وإعادة لهم عند الحاجة؟ أنا كتبت عن هذه المشكلة هنا .
المحلول
uses
SysUtils;
var
SavedCW: Word;
begin
SavedCW := Get8087CW;
try
Set8087CW($027f);
// Call .NET code here
finally
Set8087CW(SavedCW);
end;
end;
نصائح أخرى
ونفس وظيفة التي تستخدمها لتغييرها: _controlfp()
. إذا كنت تمر في قناع 0، لن يتم تغيير القيمة الحالية، ولكن سوف م> يعاد - حفظه، وتستخدم مكالمة ثانية ل_controlfp()
لاستعادته لاحقا