csrrc

csrrc

RISC-V Assembler Referenz

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

Beschreibung

csrrc liest ein Steuerregister und löscht Bits darin. Ein Steuer- und Statusregister, oder CSR, enthält den Prozessorzustand wie die Trap-Handler-Adresse und die Interrupt-Schalter (siehe csrrw). Der Name ist die Kurzform für atomares Lesen und Löschen von Bits im CSR. Der alte Wert des CSR wird nach rd geschrieben, dann wird jedes Bit, das in rs1 1 ist, im CSR auf 0 gelöscht. Bits, die in rs1 0 sind, behalten ihren Wert.

csrrc rd, csr, rs1

Das Register rs1 wirkt als Maske, ein Muster, dessen 1-Bits auswählen, welche Bits geändert werden. Die folgenden Zeilen löschen Bit 3 von mstatus, was die globale Interrupt-Freigabe ausschaltet, und lassen den vorherigen Wert in t1.

li t0, 8
csrrc t1, mstatus, t0

Wenn rs1 zero ist, wird das CSR gelesen und nie geschrieben. Wenn rd zero ist, wird der alte Wert verworfen, was die Kurzform csrc ist. Siehe csrrs zum Setzen von Bits und csrrw für die Liste der CSRs in diesem Simulator.

Das RISC-V-Handbuch sagt, dass csrrc mit rs1=x0 das CSR überhaupt nicht schreibt.

Beispiel

li t0, 8
csrrc t1, mstatus, t0   # clears bit 3 of mstatus, t1 = old mstatus