装配 – MOVDQA和MOVAPS x86指令之间的区别? - 代码日志

装配 – MOVDQA和MOVAPS x86指令之间的区别?

我在寻找Intel数据表:英特尔®64和IA-32架构
软件开发者手册,我找不到MOVDQA和MOVAPS x86指令的区别?

在英特尔数据表中,我可以找到两个说明:

This instruction can be used to load an XMM register from a 128-bit
memory location, to store the contents of an XMM register into a
128-bit memory location, or to move data between two XMM registers.

唯一的区别是:

To move a double quadword to or from unaligned memory locations, use
the MOVDQU instruction.

To move packed single-precision floating-point values to or from
unaligned memory locations, use the MOVUPS instruction.

但是我找不到两个不同说明的原因?

任何人都可以解释差异吗

在功能上,它们是相同的。

在一些(但不是全部)微架构中,由于“域越界处罚”,存在时间差异。因此,当数据与整数SSE指令一起使用时,通常应使用movdqa,当数据与浮点指令一起使用时,movdqa应该是movdqa。有关此主题的更多信息,请参阅英特尔优化手册,或Agner Fog的优秀微体系结构指南。请注意,这些延迟通常与寄存器寄存器移动而不是加载或存储相关联。

http://stackoverflow.com/questions/6678073/difference-between-movdqa-and-movaps-x86-instructions

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:装配 – MOVDQA和MOVAPS x86指令之间的区别?