csrwpseudo

csrw

pseudo
Assembly RISC-V Riferimento

lyszt.net tratta csrw e altre istruzioni RISC-V in modo più dettagliato.

Descrizione

csrw copia un registro in un registro di controllo. Un registro di controllo e stato, o CSR, contiene lo stato del processore come l'indirizzo del gestore delle trap e gli interruttori degli interrupt (vedi csrrw). La forma seguente copia rs nel CSR e scarta il vecchio valore.

csrw csr, rs

È una pseudoistruzione, un nome leggibile che l'assembler riscrive in un'istruzione reale. Diventa l'istruzione seguente, dove rd è zero così che il vecchio valore non venga letto.

csrrw zero, csr, rs

L'uso più comune imposta il gestore delle trap. Le righe seguenti mettono l'indirizzo dell'etichetta handler in mtvec.

la t0, handler
csrw mtvec, t0

I due bit meno significativi di mtvec selezionano la modalità. Con 00, ogni trap salta all'indirizzo in mtvec. Con 01, chiamata modalità vettorizzata, un interrupt salta all'indirizzo più 4 volte il suo codice di causa, quindi l'interrupt del pulsante, codice 11, arriva 44 byte dopo l'indirizzo di base. L'indirizzo stesso deve avere i due bit meno significativi liberi, perché contengono la modalità.

Il manuale RISC-V definisce csrw csr, rs1 come csrrw x0, csr, rs1.

Si espande in

csrrw zero, csr, rs

L'assembler sostituisce questa pseudoistruzione con la o le istruzioni reali elencate sopra.

Esempio

li t0, 0x100
csrw mtvec, t0   # mtvec = 0x100