dsi*_*ign 2 assembly sse x86-64 nasm
我需要带有64位立即数地址的movlps指令,根据Intel手册,这应该是完全可能的。因此,如下所示:
movlps xmm0, [0x7fffffffffa0]
Run Code Online (Sandbox Code Playgroud)
但是我得到的是NASM将操作数大小截断为32位并打印相应的警告:
sample.s:6: warning: dword data exceeds bounds
Run Code Online (Sandbox Code Playgroud)
我尝试了不同形式的qword前缀,但没有成功。
我认为您无法做到。 movlps加载或存储一个64位宽的值,但立即地址和位移通常仍限于32位。你能做的最好的就是
mov rax, 0x7fffffffffa0
movlps xmm0, [rax]
Run Code Online (Sandbox Code Playgroud)
(第一个mov可能需要movabs;我不太了解Intel语法汇编)
大多数x64指令都不会采用64位的格式。
除非我非常误解,否则您必须遍历rax寄存器。