add
lyszt.net behandelt add und andere RISC-V-Befehle ausführlicher.
Kodierungsformat
Beschreibung
add addiert die Werte in zwei Registern und speichert das Ergebnis in einem dritten. Ein Register ist ein kleiner Platz im Prozessor, der eine einzelne 32-Bit-Zahl enthält. RISC-V stellt 32 Register bereit. Ein Bit ist eine 0 oder 1, und 32 Bits decken ganze Zahlen von 0 bis ungefähr vier Milliarden ab. Arithmetik findet zwischen Registern statt und berührt den Speicher nie direkt.
add hat die untenstehende Form, und das Ergebnis ist rd = rs1 + rs2. rd ist das Zielregister, in das die Antwort kommt. rs1 und rs2 sind die Quellregister, und ihre Werte bleiben gleich.
add rd, rs1, rs2
Das Ziel kann auch als Quelle dienen. Die Zeile unten addiert t1 zu t0 und legt das Ergebnis zurück in t0. Laufende Summen in Schleifen verwenden diese Form.
add t0, t0, t1
Ein Register fasst höchstens 32 Bits. Wenn eine Summe den größten Wert überschreitet, den ein Register fassen kann, läuft das Ergebnis auf eine kleine Zahl über, so wie eine 24-Stunden-Uhr von 23:59 zurück auf 00:00 springt. Das ist ein Überlauf, und RISC-V gibt keine Warnung, wenn er auftritt.
Das RISC-V-Handbuch stellt fest, dass keine ganzzahlige Rechenanweisung eine arithmetische Ausnahme auslöst und dass der Basisbefehlssatz keine Überlaufprüfungen enthält, weil Verzweigungen die Aufgabe kostengünstig erledigen. Für die vorzeichenlose Addition genügt eine Verzweigung nach dem add. In den beiden Zeilen unten springt die Verzweigung zur Marke overflow, wenn die Summe kleiner als ein Operand ist, was nur geschieht, wenn die Summe übergelaufen ist.
add t0, t1, t2 bltu t0, t1, overflow
Im Beispiel verwenden die ersten beiden Zeilen li (load immediate), um die Konstanten 3 und 4 in t0 und t1 zu legen. Die add-Zeile hinterlässt dann 7 in t2.
Beispiel
li t0, 3 li t1, 4 add t2, t0, t1 # t2 = 7
Referenzen
- [1]RISC-V International. The RISC-V Instruction Set Manual, Volume I: Unprivileged Architecture. Version 20260120. Section 2.4, Integer Computational Instructions, page 27.
- [2]RISC-V International. The RISC-V Instruction Set Manual, Volume I: Unprivileged Architecture. Version 20260120. Section 2.4.2, Integer Register-Register Instructions, page 29.
