csrw
pseudolyszt.net obejmuje csrw i inne instrukcje RISC-V w większych szczegółach.
Opis
csrw kopiuje rejestr do rejestru sterującego. Rejestr sterująco-statusowy, czyli CSR, przechowuje stan procesora, taki jak adres procedury obsługi pułapek i przełączniki przerwań (zobacz csrrw). Poniższa postać kopiuje rs do CSR i odrzuca starą wartość.
csrw csr, rs
Jest to pseudoinstrukcja, czytelna nazwa, którą asembler przepisuje na rzeczywistą instrukcję. Staje się ona instrukcją poniżej, gdzie rd to zero, więc stara wartość nie jest odczytywana.
csrrw zero, csr, rs
Najczęstsze użycie ustawia procedurę obsługi pułapek. Poniższe wiersze umieszczają adres etykiety handler w mtvec.
la t0, handler csrw mtvec, t0
Dwa dolne bity mtvec wybierają tryb. Przy 00 każde pułapka skacze pod adres w mtvec. Przy 01, zwanym trybem wektorowym, przerwanie skacze pod adres plus 4 razy jego kod przyczyny, więc przerwanie przycisku, kod 11, ląduje 44 bajty za adresem bazowym. Sam adres musi mieć wolne dwa dolne bity, ponieważ przechowują one tryb.
Podręcznik RISC-V definiuje csrw csr, rs1 jako csrrw x0, csr, rs1.
Rozwija się do
csrrw zero, csr, rs
Asembler zastępuje tę pseudoinstrukcję rzeczywistą instrukcją lub instrukcjami wymienionymi powyżej.
Przykład
li t0, 0x100 csrw mtvec, t0 # mtvec = 0x100
