80x87 Floating Point Emulation Under Windows NT (93353)



The information in this article applies to:

  • Microsoft Windows NT Server 3.1
  • Microsoft Windows NT Workstation 3.1

This article was previously published under Q93353

SUMMARY

The math emulator provided by the Windows NT kernel is intended to provide emulation of 80387 floating-point instructions. However, only ANSI floating-point precision is provided. Long double precision is not emulated. This is consistent with MIPS (millions of instructions per second) architecture.

Some other minor differences are known and may remain in the final version. For example, tests on the 80387 chip revealed that the FSAVE instruction leaves the Error Offset and Error Selector fields in the FP environment block null if there are no pending exceptions. The Windows NT emulator fills these fields with the address of the most recently emulated instruction, even when no exception is pending. This behavior may remain because it provides extra information to the system programmer and because the emulator status word accurately indicates any pending exceptions.

MORE INFORMATION

The information applies to Win32s as well.

The floating point emulator does not support CS overrides. This does not effect compiler-generated code, only hand-tuned assembly code. This was done to improve speed, since applications that were written in C are not affected.

Modification Type:MajorLast Reviewed:10/30/2003
Keywords:kbHardware KB93353