NASM 64位立即地址movlps给“DWORD数据超过界限”
题
我需要立即地址是64个比特宽,这根据英特尔手册应完全有可能的指令movlps。所以,这样的事情:
movlps xmm0, [0x7fffffffffa0]
但是,所有我所得到的是NASM截断操作数大小为32位和打印相应的警告:
sample.s:6: warning: dword data exceeds bounds
我试图与没有成功不同形式的qword的前缀。
解决方案
最x64的指令不采取64位IMMED。
除非我很错,你必须通过RAX寄存器移动。
其他提示
我不认为你可以做到这一点。 movlps
加载或存储一个值这是64个位宽,但是立即地址和位移仍然限制在32位的总称。你能做的最好的是
mov rax, 0x7fffffffffa0
movlps xmm0, [rax]
(第一mov
可能需要movabs
;我并不真正知道英特尔语法组件)
不隶属于 StackOverflow