csrrPseudoelement

csrr

Pseudoelement
RISC-V Assembler Referenz

lyszt.net behandelt csrr und andere RISC-V-Befehle ausführlicher.

Beschreibung

csrr liest ein Steuerregister in ein Allzweckregister. Ein Steuer- und Statusregister, oder CSR, enthält den Prozessorzustand wie die Adresse des Trap-Handlers und die Ursache des letzten Traps (siehe csrrw). Die folgende Form kopiert den Wert des CSR nach rd.

csrr rd, csr

Der Assembler behandelt sie als Pseudoinstruktion, einen lesbaren Namen, den er in eine echte Instruktion umschreibt. Sie wird zur untenstehenden Instruktion. Da rs1 zero ist, wird das CSR gelesen und nichts hineingeschrieben.

csrrs rd, csr, zero

Ein Trap-Handler beginnt mit dem Lesen von zwei CSRs. mepc enthält die Adresse der unterbrochenen Instruktion und mcause enthält den Grund für den Trap.

csrr t0, mcause

Das höchste Bit von mcause ist 1 für einen Interrupt und 0 für eine Ausnahme. Die niedrigen Bits sind der Ursachencode. Der Tasteninterrupt in diesem Simulator hinterlässt 0x8000000b, was ein Interrupt mit Code 11 ist, der externe Maschineninterrupt.

Das RISC-V-Handbuch definiert csrr rd, csr als csrrs rd, csr, x0.

Wird erweitert zu

csrrs rd, csr, zero

Der Assembler ersetzt diese Pseudoanweisung durch die oben aufgeführte(n) echte(n) Anweisung(en).

Beispiel

csrr t0, mstatus   # t0 = mstatus