NASM 64 bit indirizzo immediata per movlps dà “dati DWORD supera i limiti”
Domanda
I bisogno dei movlps istruzioni con un indirizzo immediato che sia 64 bit di larghezza, che secondo manuali Intel dovrebbe essere perfettamente possibile. Quindi, qualcosa di simile:
movlps xmm0, [0x7fffffffffa0]
Ma tutto ciò che ottengo è NASM troncando la dimensione operando a 32 bit e la stampa l'avviso corrispondente:
sample.s:6: warning: dword data exceeds bounds
Ho provato con diverse forme di QWORD prefisso senza successo.
Soluzione
maggior parte delle istruzioni x64 non prendere a 64 bit immed.
a meno che non sono molto sbagliato bisogna muoversi attraverso il registro Rax.
Altri suggerimenti
Non credo che si può fare. carichi movlps
o memorizza un valore che è lunga 64 bit, ma indirizzi immediati e spostamenti sono ancora limitate a 32 bit in generale. Il meglio che puoi fare è
mov rax, 0x7fffffffffa0
movlps xmm0, [rax]
(il primo mov
può essere necessario movabs
, io non so davvero Intel sintassi assembly)