Der Befehl VMOV in der ARM-Architektur steht für Vector Move. Er wird verwendet, um Daten zwischen verschiedenen Registern zu verschieben, insbesondere zwischen ARM- und NEON-Registern. Dabei können verschiedene Datentypen und Registergrößen involviert sein, aber es findet keine Datenkonvertierung statt – die Bits werden einfach kopiert.
Dieser Befehl verschiebt Daten zwischen einem 32-Bit-ARM-Register und einem 32-Bit-NEON-Register.
Syntax:
vmov {<cond>} Rd, Sn @ move Sn to Rd
vmov {<cond>} Sn, Rd @ move Rd to Sn
Transfer von einem NEON-Register zu einem ARM-Register:
vmov R0, S1 @ Überträgt den 32-Bit-Wert aus dem NEON-Register S1 in das ARM-Register R0
Transfer von einem ARM-Register zu einem NEON-Register:
vmov S2, R3 @ Überträgt den 32-Bit-Wert aus dem ARM-Register R3 in das NEON-Register S2
Dieser Befehl ermöglicht den Transfer von 64-Bit-Daten zwischen zwei 32-Bit-ARM-Registern und einem 64-Bit-NEON-Register.
vmov {<cond>} Dd, Rl, Rh @ move Rh and Rl to Dd
vmov {<cond>} Rl, Rh, Dd @ move Dd to Rl and Rh
Transfer von zwei ARM-32-Bit-Registern in ein 64-Bit-NEON-Register:
vmov D0, R1, R2 @ Überträgt die Werte aus den ARM-Registern R1 (niedrigwertig) und R2 (höchstwertig) in das NEON-Register D0
Transfer von einem 64-Bit-NEON-Register in zwei ARM-32-Bit-Register:
vmov R4, R5, D1 @ Überträgt den 64-Bit-Wert aus D1 in die ARM-Register R4 (niedrigwertig) und R5 (höchstwertig)
Dieser Befehl ermöglicht den Transfer zwischen einem NEON-Skalar und einem ARM-Register.
vmov {<cond>}.<size> Dd[x], Rs @ move Rs to Dd[x]
vmov {<cond>}.<size> Rd, Ds[x] @ move Ds[x] to Rd
Transfer von einem ARM-Register in ein Skalarwert innerhalb eines NEON-Registers:
vmov D3[0], R6 @ Überträgt den Wert aus R6 in das erste Element (Skalar) des NEON-Registers D3
Transfer von einem Skalarwert innerhalb eines NEON-Registers in ein ARM-Register:
vmov R7, D4[1] @ Überträgt den Wert aus dem zweiten Element des NEON-Registers D4 in das ARM-Register R7
NEON-MOV-Befehle beinhalten die Möglichkeit immediate Werte in ein NEON-Register zu kopieren.
vmov.<type> Vd, #imm @ MOV immediate to Vd
vmvn.<type> Vd, #imm @ MOV negated immediate to Vd
type: Gibt die Größe der Elemente im Vektor an. Dieser Typ muss einer der folgenden sein:
Vd: Das Zielregister. Dies kann eines der folgenden Register sein:
imm: Der Immediate-Wert, der in jedes Element des Zielregisters kopiert wird.
Kopieren eines Immediate-Wertes in ein 64-Bit NEON-Register:
vmov.i32 D0, #0xFF @ Kopiert den 32-Bit Wert 0xFF in jedes 32-Bit Element des D0-Registers
Kopieren eines negierten Immediate-Wertes in ein 128-Bit NEON-Register:
vmvn.i16 Q1, #0x1F @ Kopiert den negierten 16-Bit Wert (0xFFE0) in jedes 16-Bit Element des Q1-Registers
Kopieren eines Floating-Point-Wertes in ein 32-Bit NEON-Register:
vmov.f32 S2, #1.5 @ Kopiert den 32-Bit Floating-Point Wert 1.5 in das S2-Register
Kopieren eines Immediate-Wertes in ein 128-Bit Vektorregister:
vmov.i8 Q0, #0xAB @ Kopiert den 8-Bit Wert 0xAB in jedes 8-Bit Element des Q0-Registers
zurück | Hauptmenü | weiter |