assembly - 如何同时使用 SSE2 和 PREFETCHh 指令?

标签 assembly x86

在 Intel IA-32 架构手册第 3A 卷第 2 章中,CR4.OSFXSR解释如下:

When set, enable the processor to execute SSE/SSE2/SSE3/SSSE3/SSE4 instructions, with the exception of the PAUSE,PREFETCHh, SFENCE, LFENCE, MFENCE,, MOVNTI, CLFLUSH, CRC32, and POPCNT.



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

最佳答案

是的,措辞可以更清楚。他们想说的是CR4.OSFXSR位仅控制与 SSE 寄存器一起使用的指令的执行。提到的其他指令不访问 SSE 寄存器,因此它们始终可用(如果已实现)。

下面的引用更清楚一点:

If this flag is clear, [...] Also, the processor will generate an invalid opcode exception (#UD) if it attempts to execute any SSE/SSE2/SSE3 instruction, with the exception of PAUSE, PREFETCHh, SFENCE, LFENCE, MFENCE, MOVNTI, CLFLUSH, CRC32, and POPCNT.

关于assembly - 如何同时使用 SSE2 和 PREFETCHh 指令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21434793/

相关文章:

assembly - x64 ymm/SIMD/向量指令,其中 ymm 寄存器在寄存器中指定?

assembly - ARM Cortex-m3(特别是 LPC1343)上的指令时序

gcc - ASM x86 相对 JMP

assembly - 是否有 x86 I/O 端口分配的规范?

gcc - 如何解决QEMU GDB调试错误: Remote 'g' packet reply is too long?

c - 组装中的 split

gcc - llvm-gcc 汇编器 : LDR syntax

multithreading - CPU如何重新排序指令

performance - 在x86汇编中将寄存器设置为零的最佳方法是什么:xor,mov或and?

c - GCC 内联程序集 : Jump to label outside block