版权声明:转载必须保留原出处,没有书面许可不可用于商用目的, https://blog.csdn.net/qq_43401808/article/details/87714057
FXSAVE and FXRSTOR instructions
FXSAVE与FXRSTOR指令是从Pentium II处理器引入到IA-32架构上的,早于SSE指令集的引入。这两条指令的最初版本是用于快速保存/恢复x87执行环境(被称为x87状态)。指令在操作x87 FPU寄存器时,隐式地也保存/恢复了MMX寄存器,因为MMX其实是x87 FPU的子寄存器。
注意:在技术上,FXSAVE与FXRSTOR指令并不被认为是属于SSE指令集。他们使用一个单独的CPUID特性标志位来检查:CPUID.01H:EDX.FXSR[bit 24] = 1。
FXSAVE与FXRSTOR指令将x87状态与SSE状态保存在被称为FXSAVE区(FXSAVE area)的存储器空间区域中。
FXSAVE Area
FXSAVE区保存x87状态与SSE状态,位于16字节对齐的存储区域中,共计512字节长。前416字节的内容如下图所示。
- x87状态:第0~23字节以及第32~159字节;
- SSE状态:第24~31字节以及第160~415字节;
- 保留字节:第416~511字节以及416~463字节
指令 |
描述 |
FXSAVE |
格式: (32位) FXSAVE m512byte (64位) FXSAVE64 m512byte
将x87 FPU,MMX,XMM,MXCSR寄存器状态保存到指定的512字节内存中 |
FXRSTOR |
格式: (32位) FXRSTOR m512byte (64位) FXRSTOR64 m512byte
从指定的512字节内存中恢复x87 FPU,MMX,XMM,MXCSR寄存器状态。 |
补充 FXSAVE64指令的内存区域布局。