csrrwi
lyszt.net couvre csrrwi et d'autres instructions RISC-V plus en détail.
Description
csrrwi est csrrw avec une constante à la place du registre source. Le i signifie immediate (immédiat), une constante écrite dans l'instruction. La constante uimm est un nombre de 0 à 31 car elle est stockée sur 5 bits. L'ancienne valeur du CSR va dans rd et uimm est écrit dans le CSR.
csrrwi rd, csr, uimm
La ligne ci-dessous écrit 0 dans mie, ce qui désactive toutes les sources d'interruption, et laisse le mie précédent dans t1.
csrrwi t1, mie, 0
Une valeur supérieure à 31 ne tient pas, donc une valeur plus grande est d'abord placée dans un registre puis écrite avec csrrw. Lorsque rd est zero, le CSR n'est pas lu, ce qui correspond à la notation abrégée csrwi. Voir csrrw pour ce qu'est un CSR.
Le manuel RISC-V indique que les formes immédiates prennent une valeur non signée de 5 bits qui est étendue par zéros, c'est-à-dire complétée par des zéros à gauche jusqu'à la largeur complète du registre.
Exemple
csrrwi t1, mie, 0 # mie = 0, t1 = old mie
