csrrpseudo

csrr

pseudo
Assembly RISC-V Riferimento

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

Descrizione

csrr legge un registro di controllo in un registro generico. Un registro di controllo e stato, o CSR, contiene lo stato del processore come l'indirizzo del gestore delle trap e la causa dell'ultima trap (vedi csrrw). La forma seguente copia il valore del CSR in rd.

csrr rd, csr

L'assembler la tratta come una pseudoistruzione, un nome leggibile che riscrive in un'istruzione reale. Diventa l'istruzione seguente. Poiché rs1 è zero, il CSR viene letto e non vi viene scritto nulla.

csrrs rd, csr, zero

Un gestore di trap inizia leggendo due CSR. mepc contiene l'indirizzo dell'istruzione interrotta e mcause contiene il motivo della trap.

csrr t0, mcause

Il bit più alto di mcause è 1 per un interrupt e 0 per un'eccezione. I bit bassi sono il codice della causa. L'interrupt del pulsante in questo simulatore lascia 0x8000000b, che è un interrupt con codice 11, l'interrupt esterno macchina.

Il manuale RISC-V definisce csrr rd, csr come csrrs rd, csr, x0.

Si espande in

csrrs rd, csr, zero

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

Esempio

csrr t0, mstatus   # t0 = mstatus