Intel 253666-024US Benutzerhandbuch

Seite von 760
Vol. 2A 3-393
INSTRUCTION SET REFERENCE, A-M
FSTENV/FNSTENV—Store x87 FPU Environment
IA-32 Architecture Compatibility
When operating a Pentium or Intel486 processor in MS-DOS compatibility mode, it is 
possible (under unusual circumstances) for an FNSTENV instruction to be interrupted 
prior to being executed to handle a pending FPU exception. See the section titled 
“No-Wait FPU Instructions Can Get FPU Interrupt in Window” in Appendix D of the 
Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 1
, for a 
description of these circumstances. An FNSTENV instruction cannot be interrupted in 
this way on a Pentium 4, Intel Xeon, or P6 family processor.
Operation
DEST[FPUControlWord] ← FPUControlWord;
DEST[FPUStatusWord] ← FPUStatusWord;
DEST[FPUTagWord] ← FPUTagWord;
DEST[FPUDataPointer] ← FPUDataPointer;
DEST[FPUInstructionPointer] ← FPUInstructionPointer;
DEST[FPULastInstructionOpcode] ← FPULastInstructionOpcode;
FPU Flags Affected
The C0, C1, C2, and C3 are undefined.
Floating-Point Exceptions
None.
Protected Mode Exceptions
#GP(0)
If the destination is located in a non-writable segment.
If a memory operand effective address is outside the CS, DS, 
ES, FS, or GS segment limit.
If the DS, ES, FS, or GS register is used to access memory and it 
contains a NULL segment selector.
#SS(0)
If a memory operand effective address is outside the SS 
segment limit.
#NM
CR0.EM[bit 2] or CR0.TS[bit 3] = 1.
#PF(fault-code)
If a page fault occurs.
#AC(0)
If alignment checking is enabled and an unaligned memory 
reference is made while the current privilege level is 3.
#UD 
If the LOCK prefix is used.
Real-Address Mode Exceptions
#GP
If a memory operand effective address is outside the CS, DS, 
ES, FS, or GS segment limit.