Intel IA-32 Manuale Utente

Pagina di 636
Vol. 3A 11-3
INTEL® MMX™ TECHNOLOGY SYSTEM PROGRAMMING
Execution of MMX instructions does not affect the other bits in the x87 FPU status word (bits
0 through 10 and bits 14 and 15) or the contents of the other x87 FPU registers that comprise the
x87 FPU state (the x87 FPU control word, instruction pointer, data pointer, or opcode registers). 
Table 11-2 summarizes the effects of the MMX instructions on the x87 FPU state.
11.2.1
Effect of MMX, x87 FPU, FXSAVE, and FXRSTOR
Instructions on the x87 FPU Tag Word
Table 11-3 summarizes the effect of MMX and x87 FPU instructions and the FXSAVE and
FXRSTOR instructions on the tags in the x87 FPU tag word and the corresponding tags in an
image of the tag word stored in memory.
The values in the fields of the x87 FPU tag word do not affect the contents of the MMX registers
or the execution of MMX instructions. However, the MMX instructions do modify the contents
of the x87 FPU tag word, as is described in Section 11.2, “The MMX State and MMX Register
Aliasing.” These 
modifications may affect the operation of the x87 FPU when executing x87
FPU instructions, if the x87 FPU state is not initialized or restored prior to beginning x87 FPU
instruction execution.
Note that the FSAVE, FXSAVE, and FSTENV instructions (which save x87 FPU state informa-
tion) read the x87 FPU tag register and contents of each of the floating-point registers, determine
the actual tag values for each register (empty, nonzero, zero, or special), and store the updated
tag word in memory. After executing these instructions, all the tags in the x87 FPU tag word are
set to empty (11B). Likewise, the EMMS instruction clears MMX state from the MMX/floating-
point registers by setting all the tags in the x87 FPU tag word to 11B.
Table 11-2.  Effects of MMX Instructions on x87 FPU State
MMX 
Instruction 
Type
x87 FPU Tag 
Word
TOS Field of 
x87 FPU 
Status Word
Other x87 FPU 
Registers
Bits 64 Through 
79 of x87 FPU 
Data Registers
Bits 0 Through 
63 of x87 FPU 
Data Registers
Read from 
MMX register
All tags set to 
00B (Valid)
000B
Unchanged
Unchanged
Unchanged
Write to MMX 
register
All tags set to 
00B (Valid)
000B
Unchanged
Set to all 1s
Overwritten with 
MMX data
EMMS
All fields set to 
11B (Empty)
000B
Unchanged
Unchanged
Unchanged