如何在 XMM 寄存器之间移动 128 位值?

发布于 2024-12-23 04:10:43 字数 137 浏览 2 评论 0原文

汇编中看似微不足道的问题:我想将整个 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

偏爱你一生 2024-12-30 04:10:43

它是 movapdmovapsmovdqa

movaps xmm3, xmm0

它们都做同样的事情,但有一个问题:

  • movapd 和 < code>movaps 在浮点域中运行。
  • movdqa 在整数域中运行

根据您的数据类型使用适当的整数域以避免域更改停顿。

另外,没有理由使用 movapd。始终使用 movaps 来代替,因为 movapd 需要额外的字节进行编码。

It's movapd, movaps, or movdqa

movaps xmm3, xmm0

They all do the same thing, but there's a catch:

  • movapd and movaps operate in the floating-point domain.
  • movdqa operates in the integer domain

Use the appropriate one according to your datatype to avoid domain-changing stalls.

Also, there's no reason to use movapd. Always use movaps instead because movapd takes an extra byte to encode.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文