csrrci
lyszt.net 更详细地介绍了 csrrci 和其他 RISC-V 指令。
描述
csrrci 是 csrrc 的变体,用常量掩码代替寄存器。i 代表立即数(immediate),即写入指令中的常量。常量 uimm 是一个 0 到 31 的数字,因为它存储在 5 位中。CSR 的旧值会写入 rd,然后 uimm 中为 1 的每一位都会在 CSR 中被清零。
csrrci rd, csr, uimm
下面这行清除 mstatus 的第 3 位,从而关闭全局中断使能,并将之前的值留在 t1 中。8 是二进制 1000。
csrrci t1, mstatus, 8
这种方式只能清除第 0 到第 4 位。当 uimm 为 0 时,CSR 被读取但不写入。当 rd 为 zero 时,旧值被丢弃,这就是 csrci 简写。寄存器形式请参见 csrrc。
示例
csrrci t1, mstatus, 8 # clears bit 3 of mstatus, t1 = old mstatus
