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.

War es hilfreich?

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)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top