Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我需要具有 64 位宽的立即地址的指令 movlps,根据英特尔手册,这应该是完全可能的。所以,像这样:
movlps xmm0, [0x7fffffffffa0]
但我得到的只是 NASM 将操作数大小截断为 32 位并打印相应的警告:
sample.s:6: warning: dword data exceeds bounds
我尝试了不同形式的 qword 前缀,但没有成功。
大多数 x64 指令不采用 64 位嵌入。
除非我弄错了,否则您必须通过 rax 寄存器。
我不认为你能做到这一点。 movlps加载或存储一个64 位宽的值,但立即地址和位移通常仍限制为 32 位。你能做的最好的就是
movlps
mov rax, 0x7fffffffffa0 movlps xmm0, [rax]
(第一个mov可能需要是movabs;我真的不知道英特尔语法汇编)
mov
movabs