NASM 64-Bit-Direkt Adresse für movlps gibt „dword Daten überschreitet Grenzen“
Frage
Ich brauche die Anweisung movlps mit einer sofortigen Adresse, die 64 Bit breit sein, die nach Intel-Handbuch sollten durchaus möglich sein. So etwas wie folgt aus:
movlps xmm0, [0x7fffffffffa0]
Aber alles, was ich bekommen ist NASM die Operandengröße auf 32 Bit Kürzen und das Drucken der entsprechenden Warnung:
sample.s:6: warning: dword data exceeds bounds
Ich habe versucht, mit verschiedenen Formen des qword Präfix ohne Erfolg.
Lösung
die meisten x64 Anweisungen nehmen Sie nicht 64-Bit-immed.
wenn ich mich nicht sehr irren Sie haben durch das rax Register zu bewegen.
Andere Tipps
Ich glaube nicht, dass Sie das tun können. movlps
lädt oder speichert einen Wert , die 64 Bit breit ist, aber sofort Adressen und Verschiebungen sind nach wie vor in der Regel auf 32 Bit beschränkt. Das Beste, was Sie tun können, ist
mov rax, 0x7fffffffffa0
movlps xmm0, [rax]
(die erste mov
müssen movabs
sein, ich weiß wirklich nicht, Intel Syntax assembly)