Assembly 如何使用SSE2&;同时预取指令?

Assembly 如何使用SSE2&;同时预取指令?,assembly,x86,Assembly,X86,在《英特尔IA-32体系结构手册》第3A卷第2章中,CR4.OSFXSR解释如下: 设置后,使处理器能够执行SSE/SSE2/SSE3/SSSE3/SSE4指令, 除了暂停、预回迁、SFENCE、LFENCE、MFENCE、MOVENTI、, CLFLUSH、CRC32和POPCNT 问题是,如果我想同时使用SSE2和预回迁指令,我应该怎么做?是的,措辞可能更清晰。他们的意思是说,CR4.OSFXSRbit只控制与SSE寄存器一起工作的指令的执行。提到的其他指令不访问SSE寄存器,因此它们始终可

在《英特尔IA-32体系结构手册》第3A卷第2章中,
CR4.OSFXSR
解释如下:

设置后,使处理器能够执行SSE/SSE2/SSE3/SSSE3/SSE4指令, 除了暂停、预回迁、SFENCE、LFENCE、MFENCE、MOVENTI、, CLFLUSH、CRC32和POPCNT


问题是,如果我想同时使用SSE2和预回迁指令,我应该怎么做?

是的,措辞可能更清晰。他们的意思是说,
CR4.OSFXSR
bit只控制与SSE寄存器一起工作的指令的执行。提到的其他指令不访问SSE寄存器,因此它们始终可用(如果实现)

下面的引语更清楚一些:

如果清除此标志,[…]此外,处理器将生成无效操作码异常(#UD),如果 它尝试执行任何SSE/SSE2/SSE3指令, 暂停、预取、SFENCE、LFENCE、MFENCE、MOVENTI的异常, CLFLUSH、CRC32和POPCNT


为什么有人想禁用SSE?是的,你是对的。对于Lưu Vĩnh Phúc:可能禁用它以节省功耗,因为相关的硬件逻辑已完全关闭。只是一个猜测…@LưuVĩnhPhúc:它实际上更多地是关于保存寄存器上下文,而不是关于指令本身。确保使用SSE寄存器的程序在不支持SSE的操作系统下运行时不会损坏其状态。