csrrwi

csrrwi

RISC-V 汇编 参考

lyszt.net 更详细地介绍了 csrrwi 和其他 RISC-V 指令。

描述

csrrwi 是 csrrw 的变体,用常量代替源寄存器。i 代表立即数(immediate),即写入指令中的常量。常量 uimm 是一个 0 到 31 之间的数字,因为它存储在 5 位中。CSR 的旧值写入 rd,uimm 写入 CSR。

csrrwi rd, csr, uimm

下面这行将 0 写入 mie,这会关闭所有中断源,并将之前的 mie 留在 t1 中。

csrrwi t1, mie, 0

大于 31 的值无法容纳,因此较大的值先放入寄存器,再用 csrrw 写入。当 rd 为 zero 时,不读取 CSR,这就是 csrwi 简写。关于 CSR 是什么,请参见 csrrw。

RISC-V 手册指出,立即数形式采用 5 位无符号值,并进行零扩展,即在左侧用零填充到完整的寄存器宽度。

示例

csrrwi t1, mie, 0   # mie = 0, t1 = old mie