3

我需要具有 64 位宽的立即地址的指令 movlps,根据英特尔手册,这应该是完全可能的。所以,像这样:

movlps xmm0, [0x7fffffffffa0]

但我得到的只是 NASM 将操作数大小截断为 32 位并打印相应的警告:

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

我尝试了不同形式的 qword 前缀,但没有成功。

4

2 回答 2

6

大多数 x64 指令不采用 64 位嵌入。

除非我弄错了,否则您必须通过 rax 寄存器。

于 2010-09-02T05:08:29.733 回答
5

我不认为你能做到这一点。 movlps加载或存储一个64 位宽的值,但立即地址和位移通常仍限制为 32 位。你能做的最好的就是

mov rax, 0x7fffffffffa0
movlps xmm0, [rax]

(第一个mov可能需要是movabs;我真的不知道英特尔语法汇编)

于 2010-09-02T05:06:25.930 回答