如何在 XMM 寄存器之间移动 128 位值?
汇编中看似微不足道的问题:我想将整个 XMM0 寄存器复制到 XMM3。我已经尝试过
movdq xmm3, xmm0
,但 MOVDQ 不能用于在两个 XMM 寄存器之间移动值。我该怎么办?
Seemingly trivial problem in assembly: I want to copy the whole XMM0 register to XMM3. I've tried
movdq xmm3, xmm0
but MOVDQ cannot be used to move values between two XMM registers. What should I do instead?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
它是
movapd
、movaps
或movdqa
它们都做同样的事情,但有一个问题:
movapd
和 < code>movaps 在浮点域中运行。movdqa
在整数域中运行根据您的数据类型使用适当的整数域以避免域更改停顿。
另外,没有理由使用
movapd
。始终使用 movaps 来代替,因为 movapd 需要额外的字节进行编码。It's
movapd
,movaps
, ormovdqa
They all do the same thing, but there's a catch:
movapd
andmovaps
operate in the floating-point domain.movdqa
operates in the integer domainUse the appropriate one according to your datatype to avoid domain-changing stalls.
Also, there's no reason to use
movapd
. Always usemovaps
instead becausemovapd
takes an extra byte to encode.