Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(13/E) - FXSAVE/FXRSTOR指令

版权声明:转载必须保留原出处,没有书面许可不可用于商用目的, 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指令的内存区域布局。

猜你喜欢

转载自blog.csdn.net/qq_43401808/article/details/87714057