本文介绍了你如何移动XMM寄存器之间的128位值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在装配看似琐碎的问题:我想复制整个XMM0寄存器XMM3。我试过
Seemingly trivial problem in assembly: I want to copy the whole XMM0 register to XMM3. I've tried
movdq xmm3, xmm0
但MOVDQ不能用于两个XMM寄存器之间移动的值。我应该怎么办呢?
but MOVDQ cannot be used to move values between two XMM registers. What should I do instead?
推荐答案
这是 MOVAPD
, MOVAPS
或 MOVDQA
movaps xmm3, xmm0
他们都做同样的事情,但有一个问题:
They all do the same thing, but there's a catch:
-
MOVAPD
和MOVAPS
中的浮点域中操作。 -
MOVDQA
工作在整数域
movapd
andmovaps
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.
此外,没有理由使用 MOVAPD
。始终使用 MOVAPS
来代替,因为 MOVAPD
需要一个额外的字节来恩code。
Also, there's no reason to use movapd
. Always use movaps
instead because movapd
takes an extra byte to encode.
这篇关于你如何移动XMM寄存器之间的128位值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!