Андрей Газибаров


без тайни

Инструкциите On-line

FXSAVE
Съхраняване на всички среди
Общи форми: FXSAVE dest
 
Форма КОП   I8087 I80387 B/ME
FXSAVE 0F AE /0        
Действие Съхранява в паметта пълното състояние на следните модули на процесора: устройството с плаваща запетая (и насложеното на физически същото място MMX) и устройството на SSE.
Ако флаг OSFXSR в CR4 не е установен, състоянието на SSE може да не се съхрани. Това поведение зависи от реализацията.
Форматът, в който се съхраняват средите, зависи от режима на работа:
  Защитен режим
Отм. FEDCBA9876543210
000   IP.Sel IP.Offset fOP   TW SW CW
010 MXCSR_MASK MXCSR   DP.Sel DP.Offset
020   ST0/MM0
030   ST1/MM1
040   ST2/MM2
050   ST3/MM3
060   ST4/MM4
070   ST5/MM5
080   ST6/MM6
090   ST7/MM7
0A0 XMM0
0B0 XMM1
0C0 XMM2
0D0 XMM3
0E0 XMM4
0F0 XMM5
100 XMM6
110 XMM7
120  
130  
140  
150  
160  
170  
180  
190  
1A0  
1B0  
1C0  
1D0  
1E0  
1F0  

  Разширен режим, WordSize = 64
Отм. FEDCBA9876543210
000 RIP fOP   TW SW CW
010 MXCSR_MASK MXCSR DP
020   ST0/MM0
030   ST1/MM1
040   ST2/MM2
050   ST3/MM3
060   ST4/MM4
070   ST5/MM5
080   ST6/MM6
090   ST7/MM7
0A0 XMM0
0B0 XMM1
0C0 XMM2
0D0 XMM3
0E0 XMM4
0F0 XMM5
100 XMM6
110 XMM7
120 XMM8
130 XMM9
140 XMM10
150 XMM11
160 XMM12
170 XMM13
180 XMM14
190 XMM15
1A0  
1B0  
1C0  
1D0  
1E0  
1F0  

  Разширен режим, WordSize = 32
Отм. FEDCBA9876543210
000   IP.Sel IP.Offset fOP   TW SW CW
010 MXCSR_MASK MXCSR   DP.Sel DP.Offset
020   ST0/MM0
030   ST1/MM1
040   ST2/MM2
050   ST3/MM3
060   ST4/MM4
070   ST5/MM5
080   ST6/MM6
090   ST7/MM7
0A0 XMM0
0B0 XMM1
0C0 XMM2
0D0 XMM3
0E0 XMM4
0F0 XMM5
100 XMM6
110 XMM7
120 XMM8
130 XMM9
140 XMM10
150 XMM11
160 XMM12
170 XMM13
180 XMM14
190 XMM15
1A0  
1B0  
1C0  
1D0  
1E0  
1F0  
Флагове
C3 C2 C1 C0
S S S S
Особености:
  • Полето TW съхранява думата за валидност на регистрите на FPU в съкратен вид: 0 в бит i обозначава празен регистър Ri, а 1 – зает, нула или специална стойност;
  • Полето MXCSR_MASK позволява да се определи кои битове от регистър MXCSR са валидни и кои запазени. Запис на единица в запазен флаг предизвиква #GP. Затова приложение или ОС, която използва инструкции FXRSTOR и STMXCSR трябва предварително да маскира невалидните битове.
    Полето MXCSR_MASK е недефинирано за Pentium III. Затова преди изпълнение на FXSAVE 512-байтовата област трябва да се нулира. Ако след това стойността на полето MXCSR_MASK е нула, то действителната стойност на маската е 0000FFBFh. Тази маска нулира флага DAZ, който не е дефиниран в Pentium III. Всяка друга стойност задава фактическата маска.
FPU/CPU
8087 287 387 486 P P-P P-II P-III P-4 B/ME
            • • •  
Инструкцията се смята за част от SSE. Изпълнява се ако CPUID(1) върне EDX{24} = 1.
Изключения ОБЩИ +
Всички режими
#GP(0) Ако ефективният адрес на операнда не е подравнен на 16 байта
#NM CR0.TS = 1
#UD CR0.EM = 1
#MF Ако има чакащи числени изключения
 
Съдържание Пълен текст
 
  PDF, 3.6M Приложение, 18К