在Intel IA-32架构手册第3A卷第2章中,CR4.OSFXSR
解释如下:
置1时,使能处理器执行SSE/SSE2/SSE3/SSSE3/SSE4指令,PAUSE,PREFETCHh,SFENCE,LFENCE,MFENCE,MOVNTI,CLFLUSH,CRC32和POPCNT除外.
问题是如果我想同时使用SSE2和PREFETCHh指令,我该怎么办?
是的,措辞可能会更清楚。他们的意思是该CR4.OSFXSR
位仅控制与 SSE 寄存器一起使用的指令的执行。提到的其他指令不访问 SSE 寄存器,因此它们始终可用(如果实现)。
下面的引用更清楚一些:
如果该标志被清除,[...]此外,如果处理器尝试执行任何 SSE/SSE2/SSE3 指令(PAUSE、PREFETCHh、SFENCE、LFENCE除外),它将生成无效操作码异常 (#UD)。 MFENCE、MOVNTI、CLFLUSH、CRC32 和 POPCNT。