On 1 Lis, 20:44, Evan Shaw <
eds...@gmail.com> wrote:
> I'm confused. XMM registers hold double quadwords (128-bit values);
> not quadwords.
>
> If you want to move into an XMM register from a 64-bit register, use MOVQ.
>
> If you want to move into an XMM register from memory or another XMM
> register, use MOVO (unless memory is unaligned, in which case you use
> MOVOU).
>
> - Evan
According to documentation MOVQ works like MOVSD if you copy from one
XMM register to another. But MOVSD should be used only in floating
point context. See documentation:
MOVQ
Copies a quadword from the source operand (second operand) to the
destination operand (first operand). The source and destination
operands can be MMX technology registers, XMM registers, or 64-bit
memory locations. This instruction can be used to move a quadword
between two MMX technology registers or between an MMX technology
register and a 64-bit memory location, or to move data between two XMM
registers or between an XMM register and a 64-bit memory location. The
instruction cannot be used to transfer data between memory locations.
When the source operand is an XMM register, the low quadword is moved;
when the destination operand is an XMM register, the quadword is
stored to the low quadword of the register, and the high quadword is
cleared to all 0s.