In ARMv7 NEON können die Register in drei verschiedenen Arten betrachtet werden:
Die folgende Tabelle zeigt, wie die verschiedenen Registertypen (Q, D, S) zueinander in Beziehung stehen:
Q-Register (128-Bit) | D-Register (64-Bit) | S-Register (32-Bit) | Anmerkung |
---|---|---|---|
Q0 | D0, D1 | S0, S1, S2, S3 | Q0 = {D0, D1} |
Q1 | D2, D3 | S4, S5, S6, S7 | Q1 = {D2, D3} |
Q2 | D4, D5 | S8, S9, S10, S11 | Q2 = {D4, D5} |
Q3 | D6, D7 | S12, S13, S14, S15 | Q3 = {D6, D7} |
Q4 | D8, D9 | S16, S17, S18, S19 | Q4 = {D8, D9} |
Q5 | D10, D11 | S20, S21, S22, S23 | Q5 = {D10, D11} |
Q6 | D12, D13 | S24, S25, S26, S27 | Q6 = {D12, D13} |
Q7 | D14, D15 | S28, S29, S30, S31 | Q7 = {D14, D15} |
Q8 | D16, D17 | - | |
Q9 | D18, D19 | - | |
Q10 | D20, D21 | - | |
Q11 | D22, D23 | - | |
Q12 | D24, D25 | - | |
Q13 | D26, D27 | - | |
Q14 | D28, D29 | - | |
Q15 | D30, D31 | - |
Ein Q-Register (z.B. Q0) kann als 128-Bit Register dargestellt werden, das aus zwei 64-Bit D-Registern (D0, D1) besteht, die wiederum aus jeweils zwei 32-Bit S-Registern bestehen (S0, S1, S2, S3).
Q0: [ S0 | S1 | S2 | S3 ] ← 128-Bit
D0: [ S0 | S1 ] ← 64-Bit
D1: [ S2 | S3 ] ← 64-Bit
S0: [ 32-Bit ]
Um NEON-Register in GDB zu inspizieren, kann man verschiedene Formate verwenden, um die Daten auf unterschiedliche Weise anzuzeigen:
p /x $d0.u8
Zeigt den Inhalt von d0
als 8-Bit unsigned integers im hexadezimalen Format an. Jedes Byte wird separat dargestellt.
p /x $d0.u16
Zeigt den Inhalt von d0
als 16-Bit unsigned integers im hexadezimalen Format an. Jedes Halbwort wird separat dargestellt.
p /x $d0.u32
Zeigt den Inhalt von d0
als 32-Bit unsigned integers im hexadezimalen Format an.
p /x $d0.u64
Zeigt den Inhalt von d0
als 64-Bit unsigned integers im hexadezimalen Format an.
p /f $d0.f32
Zeigt den Inhalt von d0
als 32-Bit Gleitkommazahlen an.
p /f $d0.f64
Zeigt den Inhalt von d0
als 64-Bit Gleitkommazahlen an.
p /d $d0.s8
Zeigt den Inhalt von d0
als 8-Bit signed integers im Dezimalformat an.
p /d $d0.s16
Zeigt den Inhalt von d0
als 16-Bit signed integers im Dezimalformat an.
p /d $d0.s32
Zeigt den Inhalt von d0
als 32-Bit signed integers im Dezimalformat an.
p /d $d0.s64
Zeigt den Inhalt von d0
als 64-Bit signed integers im Dezimalformat an.
Diese Befehle erlauben es die NEON-Register in GDB in verschiedenen Formaten zu inspizieren, abhängig davon, wie die Daten im Register interpretiert werden sollen.
zurück | Hauptmenü | weiter |