首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MOVDQA和MOVAPS x86指令的区别?

MOVDQA和MOVAPS x86指令的区别?
EN

Stack Overflow用户
提问于 2011-07-13 11:21:42
回答 1查看 20.7K关注 0票数 41

我在看英特尔数据表:英特尔64和IA-32架构软件开发人员手册和我找不到

  • MOVDQA:移动对齐双Quadword
  • MOVAPS:移动对齐填充Single-Precision

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

此指令可用于从128位内存位置加载XMM寄存器,将XMM寄存器的内容存储到128位内存位置,或在两个XMM寄存器之间移动数据。

唯一的区别是:

若要将双四字移动到或从未对齐内存位置,请使用MOVDQU指令。

若要将打包的单精度浮点值移动到或从未对齐内存位置移动,请使用MOVUPS指令。

但我找不到为什么两种不同的指令?

,那么有谁能解释这种区别吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-13 11:54:47

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

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

票数 56
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6678073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档