csrrc

csrrc

RISC-V アセンブリ 参考

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

説明

csrrc は制御レジスタを読み取り、その中のビットをクリアします。制御およびステータスレジスタ(CSR)は、トラップハンドラアドレスや割り込みスイッチなどのプロセッサ状態を保持します(csrrw を参照)。名前は atomic read and clear bits in CSR の略です。CSR の古い値は rd に入り、その後 rs1 で 1 になっているすべてのビットが CSR 内で 0 にクリアされます。rs1 で 0 のビットはその値を保ちます。

csrrc rd, csr, rs1

レジスタ rs1 はマスクとして機能し、1 のビットがどのビットを変更するかを選ぶパターンです。以下の行は mstatus のビット 3 をクリアし、グローバル割り込みイネーブルをオフにし、以前の値を t1 に残します。

li t0, 8
csrrc t1, mstatus, t0

rs1 が zero のとき、CSR は読み取られ、決して書き込まれません。rd が zero のとき、古い値は破棄され、これが csrc の省略形です。ビットを設定するには csrrs を、このシミュレータの CSR の一覧については csrrw を参照してください。

RISC-V マニュアルには、rs1=x0 の csrrc は CSR をまったく書き込まないと書かれています。

例

li t0, 8
csrrc t1, mstatus, t0   # clears bit 3 of mstatus, t1 = old mstatus