Set8087CW, процедура
Синтаксис
procedure Set8087CW(ControlWord: Word);
Описание
Процедура Set8087CW устанавливает управляющее состояние FPU и сохраняет значение
параметра ControlWord в переменной Default8087CW. Set8087CW - настоящая процедура.
Ошибки
Советы и приемы
- Дополнительную информацию об управляющем состоянии FPU можно получить
в документации по архитектуре процессоров Intel.
- Чаще всего Set8087CW служит для изменения точности операций с плавающей
точкой, маски исключительных ситуаций и режима округления. Применяя типы
Comp и Currency, убедитесь, что не уменьшили точность операций с плавающей
точкой.
Пример
type
TRoundMode = (rmNearest, rmDown, rmUp, rnZero);
TPrecisionMode = (pmSingle, pmReserved, pmDouble, pmExtended);
TExceptionMask = (emInvalid, emDenormalized, emZeroDivide,
emOverflow, emPrecision);
TExceptionMasks = set of TExceptionMask;
TFpuControl = record
RoundMode: TRoundMode;
Precision: TPrecisionMode;
ExceptionMask: TExceptionMasks;
end;
const
RoundShift =10;
PrecisionShift = 8;
// Устанавливаем управляющее состояние FPU структурированным
// образом.
procedure SetFpuCW(const FpuCW: TFpuControl);
var
CW: Word;
begin
CW := Byte(FpuCW.ExceptionMask);
CW := CW or (Ord(FpuCW.Precision) shl PrecisionShift);
CW := CW or (Ord(FpuCW.RoundMode) shl RoundShift);
Set8087CW(CW);
end;
Смотрите также
Функции Int, Round,
Trunc.
Нет комментариев.
Оставить комментарий:
|
|