控制状态寄存器指令 (csrrc、csrrs、csrrw、csrrci、csrrsi、csrrwi), 使我们可以轻松地访问一些程序性能计数器。对于这些 64 位计数器, 我们一次可以读取 32 位。这些计数器包括了系统时间, 时钟周期以及执行的指令数目。
- CSRRW
- 先读取寄存器的值:t=CSRs[csr];
- 将rs1这个RS的值,写入CSRs[csr];
- 将读回来的t, 写入到rd当中;
- CSRRWI
- 将CSRs[csr]的值,读出来,写入rd对应的逻辑寄存器中;
- 然后将5 bits立即数,写入CSRs[csr];
- CSRRS
- 将CSRs[csr]这个CRS的值先读出来;
- 将读出来的值,t, 与逻辑寄存器rs1的值进行|;
- 结果写入逻辑寄存器rd;
- CSRRC
- 将CSRs[csr]这个CRS的值先读出来;
- 将读出来的值,t, 与逻辑寄存器rs1按位取反后的值,进行&;(也就是clear操作)
- 结果写入逻辑寄存器rd;
- CSRRSI
- 将CSRs[csr]这个CRS的值先读出来;
- 将读出来的值,t, 与立即数进行|;
- 结果写入逻辑寄存器rd;
- CSRRCI
- 将CSRs[csr]这个CRS的值先读出来;
- 将读出来的值,t, 与立即数取反后的值,进行|;(即clear操作);
- 结果写入逻辑寄存器rd;