Datenverarbeitung unmittelbaren Operanden (Immediate Operands)
Arithmetik (unmittelbar)
Dies bezieht sich auf arithmetische Operationen, die direkt mit sofortigen (Immediates) Werten ausgeführt werden. Beispiele sind Addition, Subtraktion, etc., wobei einer der Operanden ein konstanter Wert ist.
Die arithmetischen (unmittelbar) Anweisungen akzeptieren einen 12-Bit-unvorzeichenlosen Sofortwert, der optional um 12 Bit nach links verschoben werden kann.
Die arithmetischen (unmittelbar) Anweisungen, die keine Bedingungsflags setzen, können vom aktuellen Stapelzeiger lesen und in ihn schreiben.
Die Anweisungen zum Setzen von Flags können vom Stapelzeiger lesen, aber nicht in ihn schreiben.
| Code | Beschreibung | Siehe auch |
|---|---|---|
| ADD | Addieren | ADD |
| ADDS | Addieren und Flag setzen | ADDS |
| SUB | Subtrahieren | SUB |
| SUBS | Subtrahieren und Flags setzen | SUBS |
| CMP | Vergleiche | CMP |
| CMN | Vergleiche Negativ | CMN |
Ganzzahl Minimum und Maximum (unmittelbar)
Hierbei handelt es sich um Anweisungen, die den Minimum- oder Maximumwert aus zwei Ganzzahlen bestimmen, wobei einer dieser Operanden ein unmittelbarer Wert ist.
Die Integer-Maximum- und Minimum-Anweisungen (unmittelbar) bestimmen das Maximum/Minimum des Quellregisterwerts und des Sofortwerts.
| Code | Beschreibung | Siehe auch |
|---|---|---|
| SMAX | Vorzeichen Maximum | SMAX |
| SMIN | Vorzeichen Minimum | SMIN |
| UMAX | Vorzeichenlos Maximum | UMAX |
| UMIN | Vorzeichenlos Minimum | UMIN |
Logisch (unmittelbar)
Logische Operationen wie AND, OR, EOR, etc., bei denen ein Operand ein unmittelbarer Wert ist.
Die logischen (unmittelbar) Anweisungen akzeptieren einen Bitmasken-Sofortwert, der ein 32-Bit-Muster oder ein 64-Bit-Muster ist, das als Vektor identischer Elemente der Größe e = 2, 4, 8, 16, 32 oder 64 Bits betrachtet wird. Jedes Element enthält dasselbe Untermuster, d. h. eine einzelne Folge von 1 bis (e - 1) Bits ungleich Null ab Bit 0, gefolgt von Nullbits, dann rotiert um 0 bis (e - 1) Bits. Dieser Mechanismus kann 5334 einzigartige 64-Bit-Muster als 2667 Musterpaare und deren bitweise Inverse erzeugen.
Hinweis: Werte, die nur aus Nullen oder nur Einsen bestehen, können auf diese Weise nicht beschrieben werden.
Die logischen (sofortigen) Anweisungen, die die Bedingungsflags nicht setzen, können in den aktuellen Stapelzeiger schreiben, um beispielsweise den Stapelzeiger in einem Funktionsprolog auszurichten.
Hinweis: Mit Ausnahme von ANDS und seinem TST-Alias setzen logische (sofortige) Anweisungen die Bedingungsflags nicht. Die endgültigen Ergebnisse einer bitweisen Operation können jedoch durch einen bedingten CBZ-, CBNZ-, TBZ- oder TBNZ-Zweig getestet werden.
| Code | Beschreibung | Siehe auch |
|---|---|---|
| AND | Bitweise UND | AND |
| ANDS | Bitweise UND und setzt Flags | ANDS |
| EOR | Bitweise exklusiv ODER | EOR |
| ORR | Bitweise inklusiv ODER | ORR |
| TST | Teste Bits | TST |
Bewegen (Move, weiter unmittelbarer Wert)
Dies bezieht sich auf Bewegungsoperationen, bei denen große unmittelbare Werte (oft 32 oder 64 Bit) in Register geladen werden.
Die Move-Anweisungen (weiter unmittelbarer Wert) fügen einen 16-Bit-Immediate-Befehl oder einen invertierten Immediate-Befehl in eine 16-Bit-ausgerichtete Position im Zielregister ein. Der Wert der anderen Bits im Zielregister hängt von der verwendeten Variante ab. Der optionale Verschiebungsbetrag kann ein beliebiges Vielfaches von 16 sein, das kleiner als die Registergröße ist.
| Code | Beschreibung | Siehe auch |
|---|---|---|
| MOVZ | Schreibe Wert und Fülle mit NULL | MOVZ |
| MOVN | Bit-weise Komplementen Wert (negiert) | MOVN |
| MOVK | Ersetze nur gesetzte Bits | MOVK |
Bewegen (Move, unmittelbar)
Operationen, die unmittelbare Werte in Register laden, jedoch in diesem Fall kleinere Werte.
| Code | Beschreibung | Siehe auch |
|---|---|---|
| MOV | Kopiere Wert | MOV |
PC-relative Adressberechnung
Dies beinhaltet Berechnungen von Adressen relativ zum Program Counter (PC), oft um relative Adressen innerhalb des Codes zu berechnen.
Bitfeldbewegung
Hierbei handelt es sich um Operationen, die Bitfelder innerhalb eines Registers extrahieren oder verschieben.
Bitfeld einfügen und extrahieren
Dies umfasst detaillierte Operationen zum Einfügen oder Extrahieren spezifischer Bitfelder in oder aus einem Register.
Register extrahieren
Dieser Abschnitt beschreibt Operationen, bei denen Teile eines Registers in ein anderes Register extrahiert werden.
Schift (unmittelbar)
Hierbei handelt es sich um Schiftoperationen an Registerwerten, wobei die Schiftgrösse ein unmittelbarer Wert ist.
Vorzeichen-Erweiterung und Null-Erweiterung
Diese Operationen erweitern einen kleineren Integer-Wert auf eine größere Größe, entweder indem das Vorzeichenbit (Vorzeichen-Erweiterung) oder Nullen (Null-Erweiterung) hinzugefügt werden.