csrc疑似

csrc

疑似
RISC-V アセンブリ 参考

lyszt.netはcsrcおよびその他のRISC-V命令をより詳しく扱っています。

説明

csrc は制御レジスタのビットをクリアします。制御・ステータスレジスタ(CSR)は、トラップハンドラのアドレスや割り込みスイッチなど、プロセッサの状態を保持します(csrrw を参照)。以下の形式は、rs で 1 になっている CSR のすべてのビットをクリアし、他のビットは変更しません。

csrc csr, rs

これは疑似命令であり、アセンブラが実際の命令に書き換える読みやすい名前です。以下の命令になり、rd は zero なので古い値は破棄されます。

csrrc zero, csr, rs

以下の行は mstatus のビット 3 をクリアし、グローバル割り込みイネーブルをオフにします。

li t0, 8
csrc mstatus, t0

プロセッサはトラップの開始時にこのビットを自らクリアし、mret がそれを復元するため、ハンドラがこれを行う必要はほとんどありません。プログラムは csrc を使って短いコード区間を割り込みから保護し、その後 csrs で再びビットをセットします。

展開先

csrrc zero, csr, rs

アセンブラはこの疑似命令を、上記に示された実際の命令または複数の命令に置き換えます。

例

li t0, 8
csrc mstatus, t0   # clears bit 3 of mstatus