movlps的NASM 64位立即地址给出“双字数据超出边界”
我需要具有 64 位宽立即地址的指令 movlps,根据 Intel 手册,这应该是完全可能的。所以,像这样:
movlps xmm0, [0x7fffffffffa0]
但我得到的只是 NASM 将操作数大小截断为 32 位并打印相应的警告:
sample.s:6: warning: dword data exceeds bounds
我尝试了不同形式的 qword 前缀,但没有成功。
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.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我认为你做不到。
movlps
加载或存储 64 位宽的值,但立即地址和位移通常仍限制为 32 位。你能做的最好的事情是(第一个
mov
可能需要是movabs
;我真的不知道英特尔语法汇编)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(the first
mov
may need to bemovabs
; I don't really know Intel syntax assembly)大多数 x64 指令不采用 64 位立即处理。
除非我弄错了,否则你必须通过 rax 寄存器。
most x64 instructions don't take 64 bit immed.
unless I'm very mistaken you have to move through the rax register.