Registrierungen
Registrieren: die Hände des Prozessors
Zunächst: Was ist ein Bit? Ein Bit ist eine einzelne 0 oder 1, die kleinste Informationseinheit, die ein Computer speichern kann. Fasst man 32 davon zusammen, erhält man eine 32-Bit-Zahl, die von 0 bis etwa 4 Milliarden zählen kann. Jedes Register und jeder Speicherplatz in RISC-V enthält eine 32-Bit-Zahl.
Ein Register ist ein kleiner Speicherplatz innerhalb des Prozessors, der eine 32-Bit-Zahl enthält. RISC-V stellt 32 Register bereit. Da sie sich im Prozessorkern befinden, sind Register um Größenordnungen schneller zu verwenden als der Hauptspeicher. Einige wenige von ihnen decken das meiste ab, was man schreibt: t0 bis t2 (temporäre Werte), a0 bis a2 (Argumente und Ergebnisse), zero (immer 0), sp (Stack-Zeiger) und ra (Rücksprungadresse).
# Drucke die Zahl 42, dann beende.# a7 wählt den Dienst aus und a0 trägt den Wert.li a7, 1 # Dienst 1 = Drucke Ganzzahlli a0, 42 # der Wert zum Ausdruckenecall # machen Sie esli a7, 10 # Dienst 10 = Beendenecall
steht für load immediate (sofort laden) und legt eine Konstante in ein Register. wählt Dienst 1 aus, der eine Ganzzahl ausgibt. legt die auszugebende Zahl in a0 ab. übergibt die Kontrolle an das System, das den Wert in a0 ausgibt. Dann wählt den Beendigungsdienst aus, und beendet das Programm. Drücke Run, ändere dann 42 und führe das Programm erneut aus.
Wenn a7 auf 1 gesetzt wird, gibt der nächste ecall eine Zahl aus.
pc beschriftete Feld, kurz für program counter (Programmzähler), enthält die Adresse der aktuell hervorgehobenen Zeile. Diese Zahl ist alles, was der Prozessor über seine Position im Programm weiß: Er holt die Anweisung an der Adresse im Programmzähler, führt sie aus und addiert dann vier zum Programmzähler, um zur nächsten Anweisung zu gelangen. Ein Register erhält seinen Wert, wenn das in seiner Zeile ausgeführt wird, und die Ausgabe erscheint erst, wenn das erste ausgeführt wird.