Question

I need the instruction movlps with an immediate address that be 64 bits wide, which according to Intel manuals should be perfectly possible. So, something like this:

movlps xmm0, [0x7fffffffffa0]

But all what I get is NASM truncating the operand size to 32 bits and printing the corresponding warning:

sample.s:6: warning: dword data exceeds bounds

I have tried with different forms of the qword prefix without success.

Was it helpful?

Solution

most x64 instructions don't take 64 bit immed.

unless I'm very mistaken you have to move through the rax register.

OTHER TIPS

I don't think you can do that. movlps loads or stores a value that's 64 bits wide, but immediate addresses and displacements are still limited to 32 bits in general. The best you can do is

mov rax, 0x7fffffffffa0
movlps xmm0, [rax]

(the first mov may need to be movabs; I don't really know Intel syntax assembly)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top