Register: Unterschied zwischen den Versionen
Die Seite wurde neu angelegt: „== Allzweckregister, Nullregister und Stapelzeiger == Die 31 Allzweckregister werden R0-R30 genannt. Das Register R31 zeigt den aktuellen Stapelzeiger oder das Nullregister dar. Wenn die Register in einer bestimmten Befehlsvariante verwendet werden, müssen sie qualifiziert sein, um die Operandendatengröße, 32 Bit oder 64 Bit, und die Datengröße des Befehls anzugeben. Wenn die Datengröße 32 Bit beträgt, werden die unteren 32 Bit des Registers ve…“ |
KKeine Bearbeitungszusammenfassung |
||
| (2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 5: | Zeile 5: | ||
Wenn die Register in einer bestimmten Befehlsvariante verwendet werden, müssen sie qualifiziert sein, um die Operandendatengröße, 32 Bit oder 64 Bit, und die Datengröße des Befehls anzugeben. | Wenn die Register in einer bestimmten Befehlsvariante verwendet werden, müssen sie qualifiziert sein, um die Operandendatengröße, 32 Bit oder 64 Bit, und die Datengröße des Befehls anzugeben. | ||
Wenn die Datengröße 32 Bit beträgt, werden die unteren 32 Bit des Registers verwendet und die oberen 32 Bit beim Lesen ignoriert. Beim | Wenn die Datengröße 32 Bit beträgt, werden die unteren 32 Bit des Registers verwendet und die oberen 32 Bit beim Lesen ignoriert. Beim Schreiben von einer Datengröße von 32 Bit werden die unteren 32 Bit des Registers geschrieben und die oberen 32 Bit mit NULL gelöscht. | ||
{| class="wikitable" | {| class="wikitable" | ||
| Zeile 24: | Zeile 24: | ||
| SP || 64 Bit || Aktueller Stackpointer | | SP || 64 Bit || Aktueller Stackpointer | ||
|} | |} | ||
'''Folgendes ist zu beachten''': | |||
* Die Namen Xn und Wn beziehen sich beide auf dasselbe Allzweckregister, Rn. | |||
* Es gibt kein Register mit dem Namen W31 oder X31. | |||
* Der Name SP stellt den Stapelzeiger für 64-Bit-Operanden dar, wobei eine Kodierung des Werts 31 im entsprechenden Registerfeld als Lesen oder Schreiben des aktuellen Stapelzeigers interpretiert wird. Wenn Anweisungen diese Operandenkodierung nicht als Stapelzeiger interpretieren, ist die Verwendung des Namens SP ein Fehler. | |||
* Der Name WSP stellt den aktuellen Stapelzeiger in einem 32-Bit-Kontext dar. | |||
* Der Name XZR stellt das Nullregister für 64-Bit-Operanden dar, wobei eine Kodierung des Werts 31 im entsprechenden Registerfeld als Rückgabe von Null beim Lesen oder Verwerfen des Ergebnisses beim Schreiben interpretiert wird. Wenn Anweisungen diese Operandenkodierung nicht als Nullregister interpretieren, ist die Verwendung des Namens XZR ein Fehler. | |||
* Der Name WZR stellt das Nullregister in einem 32-Bit-Kontext dar. | |||
* Die Architektur definiert keinen bestimmten Namen für das Allzweckregister R30, um seine Rolle als Linkregister bei Prozeduraufrufen widerzuspiegeln. Ein A64-Assembler muss jedoch zu diesem Zweck immer W30 und X30 verwenden, und zusätzliche Softwarenamen können als Teil des Prozeduraufrufstandards definiert werden, siehe Prozeduraufrufstandard für die 64-Bit-Arm-Architektur. | |||
== SIMD- und Gleitkommaregister == | |||
Die 32 Register in der SIMD- und Gleitkommaregisterdatei, V0-V31, enthalten Gleitkommaoperanden für die skalaren Gleitkommabefehle und sowohl skalare als auch Vektoroperanden für die erweiterten SIMD-Befehle. Wenn sie in einer bestimmten Befehlsform verwendet werden, müssen die Namen weiter qualifiziert werden, um die Datenform anzugeben, das heißt die Datenelementgröße und die Anzahl der Elemente oder Spuren innerhalb des Registers. Eine ähnliche Anforderung wird an die Allzweckregister gestellt. | |||
=== Zusätzliche Details über SIMD- und Gleitkommaregister === | |||
* Namenskonventionen: | |||
** S0-S31: 32-Bit skalare Gleitkommawerte | |||
** D0-D31: 64-Bit skalare Gleitkommawerte | |||
** Q0-Q31: 128-Bit SIMD-Register | |||
*Verwendung in SIMD-Befehlen: | |||
** In SIMD-Befehlen können V0-V31 für ganzzahlige und Gleitkommaoperationen verwendet werden. | |||
** Die SIMD-Befehle unterstützen verschiedene Datentypen und -größen, z.B. 8-Bit-, 16-Bit- und 32-Bit-Ganzzahlen sowie 32-Bit- und 64-Bit- Gleitkommazahlen. | |||
* Verwendung in Gleitkommabefehlen: | |||
** Die skalaren Gleitkommabefehle verwenden die Register S0-S31 für 32-Bit-Gleitkommazahlen und D0-D31 für 64-Bit-Gleitkommazahlen. | |||
** Die Gleitkommaregister können auch für Operationen wie Addition, Multiplikation und Division von Gleitkommazahlen genutzt werden. | |||
Aktuelle Version vom 11. März 2025, 13:15 Uhr
Allzweckregister, Nullregister und Stapelzeiger
Die 31 Allzweckregister werden R0-R30 genannt. Das Register R31 zeigt den aktuellen Stapelzeiger oder das Nullregister dar.
Wenn die Register in einer bestimmten Befehlsvariante verwendet werden, müssen sie qualifiziert sein, um die Operandendatengröße, 32 Bit oder 64 Bit, und die Datengröße des Befehls anzugeben.
Wenn die Datengröße 32 Bit beträgt, werden die unteren 32 Bit des Registers verwendet und die oberen 32 Bit beim Lesen ignoriert. Beim Schreiben von einer Datengröße von 32 Bit werden die unteren 32 Bit des Registers geschrieben und die oberen 32 Bit mit NULL gelöscht.
| Name | Größe | Beschreibung |
|---|---|---|
| Wn | 32 Bit | Allzweckregister 0-30 |
| Xn | 64 Bit | Allzweckregister 0-30 |
| WZR | 32 Bit | Nullregister |
| XZR | 64 Bit | Nullregister |
| WSP | 32 Bit | Aktueller Stackpointer |
| SP | 64 Bit | Aktueller Stackpointer |
Folgendes ist zu beachten:
- Die Namen Xn und Wn beziehen sich beide auf dasselbe Allzweckregister, Rn.
- Es gibt kein Register mit dem Namen W31 oder X31.
- Der Name SP stellt den Stapelzeiger für 64-Bit-Operanden dar, wobei eine Kodierung des Werts 31 im entsprechenden Registerfeld als Lesen oder Schreiben des aktuellen Stapelzeigers interpretiert wird. Wenn Anweisungen diese Operandenkodierung nicht als Stapelzeiger interpretieren, ist die Verwendung des Namens SP ein Fehler.
- Der Name WSP stellt den aktuellen Stapelzeiger in einem 32-Bit-Kontext dar.
- Der Name XZR stellt das Nullregister für 64-Bit-Operanden dar, wobei eine Kodierung des Werts 31 im entsprechenden Registerfeld als Rückgabe von Null beim Lesen oder Verwerfen des Ergebnisses beim Schreiben interpretiert wird. Wenn Anweisungen diese Operandenkodierung nicht als Nullregister interpretieren, ist die Verwendung des Namens XZR ein Fehler.
- Der Name WZR stellt das Nullregister in einem 32-Bit-Kontext dar.
- Die Architektur definiert keinen bestimmten Namen für das Allzweckregister R30, um seine Rolle als Linkregister bei Prozeduraufrufen widerzuspiegeln. Ein A64-Assembler muss jedoch zu diesem Zweck immer W30 und X30 verwenden, und zusätzliche Softwarenamen können als Teil des Prozeduraufrufstandards definiert werden, siehe Prozeduraufrufstandard für die 64-Bit-Arm-Architektur.
SIMD- und Gleitkommaregister
Die 32 Register in der SIMD- und Gleitkommaregisterdatei, V0-V31, enthalten Gleitkommaoperanden für die skalaren Gleitkommabefehle und sowohl skalare als auch Vektoroperanden für die erweiterten SIMD-Befehle. Wenn sie in einer bestimmten Befehlsform verwendet werden, müssen die Namen weiter qualifiziert werden, um die Datenform anzugeben, das heißt die Datenelementgröße und die Anzahl der Elemente oder Spuren innerhalb des Registers. Eine ähnliche Anforderung wird an die Allzweckregister gestellt.
Zusätzliche Details über SIMD- und Gleitkommaregister
- Namenskonventionen:
- S0-S31: 32-Bit skalare Gleitkommawerte
- D0-D31: 64-Bit skalare Gleitkommawerte
- Q0-Q31: 128-Bit SIMD-Register
- Verwendung in SIMD-Befehlen:
- In SIMD-Befehlen können V0-V31 für ganzzahlige und Gleitkommaoperationen verwendet werden.
- Die SIMD-Befehle unterstützen verschiedene Datentypen und -größen, z.B. 8-Bit-, 16-Bit- und 32-Bit-Ganzzahlen sowie 32-Bit- und 64-Bit- Gleitkommazahlen.
- Verwendung in Gleitkommabefehlen:
- Die skalaren Gleitkommabefehle verwenden die Register S0-S31 für 32-Bit-Gleitkommazahlen und D0-D31 für 64-Bit-Gleitkommazahlen.
- Die Gleitkommaregister können auch für Operationen wie Addition, Multiplikation und Division von Gleitkommazahlen genutzt werden.