csrrs
lyszt.net obejmuje csrrs i inne instrukcje RISC-V w większych szczegółach.
Opis
csrrs odczytuje rejestr sterowania i ustawia w nim bity. Rejestr sterowania i stanu, czyli CSR, przechowuje stan procesora, taki jak adres procedury obsługi pułapki i przełączniki przerwań (zobacz csrrw). Nazwa jest skrótem od atomic read and set bits in CSR (atomowy odczyt i ustawienie bitów w CSR). Stara wartość CSR trafia do rd, a następnie każdy bit, który ma wartość 1 w rs1, jest ustawiany na 1 w CSR. Bity, które mają wartość 0 w rs1, zachowują swoją wartość.
csrrs rd, csr, rs1
Rejestr rs1 działa jako maska, wzorzec, którego bity o wartości 1 wybierają, które bity mają zostać zmienione. Poniższe wiersze ustawiają bit 3 rejestru mstatus, globalne włączenie przerwań, i pozostawiają poprzednią wartość w t1.
li t0, 8 csrrs t1, mstatus, t0
8 to binarnie 1000, więc zmienia się tylko bit 3. Gdy rs1 to zero, CSR jest odczytywany i nigdy nie zapisywany, co jest skrótem csrr. Gdy rd to zero, stara wartość jest odrzucana, co jest skrótem csrs. Zobacz csrrw, aby poznać listę CSR-ów w tym symulatorze, oraz csrrc w celu czyszczenia bitów.
Podręcznik RISC-V mówi, że csrrs z rs1=x0 w ogóle nie zapisuje CSR.
Przykład
li t0, 8 csrrs t1, mstatus, t0 # sets bit 3 of mstatus, t1 = old mstatus
