csrrc
lyszt.net obejmuje csrrc i inne instrukcje RISC-V w większych szczegółach.
Opis
csrrc odczytuje rejestr sterowania i zeruje w nim bity. Rejestr sterowania i stanu, czyli CSR, przechowuje stan procesora, taki jak adres procedury obsługi pułapek i przełączniki przerwań (zobacz csrrw). Nazwa jest skrótem od atomowego odczytu i zerowania bitów w CSR. Stara wartość CSR trafia do rd, następnie każdy bit, który ma wartość 1 w rs1, jest zerowany w CSR. Bity, które mają wartość 0 w rs1, zachowują swoją wartość.
csrrc rd, csr, rs1
Rejestr rs1 działa jako maska, wzorzec, którego bity o wartości 1 wybierają, które bity zmienić. Poniższe wiersze zerują bit 3 rejestru mstatus, co wyłącza globalne zezwolenie na przerwania, i pozostawiają poprzednią wartość w t1.
li t0, 8 csrrc t1, mstatus, t0
Gdy rs1 to zero, CSR jest odczytywany i nigdy nie jest zapisywany. Gdy rd to zero, stara wartość jest odrzucana, co stanowi skrót csrc. Zobacz csrrs dotyczące ustawiania bitów i csrrw dotyczące listy CSR w tym symulatorze.
Podręcznik RISC-V mówi, że csrrc z rs1=x0 w ogóle nie zapisuje CSR.
Przykład
li t0, 8 csrrc t1, mstatus, t0 # clears bit 3 of mstatus, t1 = old mstatus
