我需要指令movlps,其地址为64位宽,根据英特尔手册应该是完全可能的。所以,像这样:
movlps xmm0, [0x7fffffffffa0]
但我得到的只是NASM将操作数大小截断为32位并打印相应的警告:
sample.s:6: warning: dword data exceeds bounds
我尝试过使用不同形式的qword前缀但没有成功。
答案 0 :(得分:4)
我认为你不能那样做。 movlps
加载或存储64位宽的值,但是一般情况下,立即地址和位移仍限制为32位。你能做的最好的就是
mov rax, 0x7fffffffffa0
movlps xmm0, [rax]
(第一个mov
可能需要movabs
;我真的不知道英特尔语法汇编
答案 1 :(得分:4)
大多数x64指令不需要64位immed。
除非我非常错误,否则你必须通过rax寄存器。