csrrc

csrrc

RISC-V Ассемблер Ссылка

lyszt.net охватывает csrrc и другие инструкции RISC-V более подробно.

Описание

csrrc читает регистр управления и сбрасывает в нём биты. Регистр управления и состояния, или CSR, хранит состояние процессора, такое как адрес обработчика ловушек и переключатели прерываний (см. csrrw). Название — сокращение от атомарного чтения и сброса битов в CSR. Старое значение CSR помещается в rd, затем каждый бит, равный 1 в rs1, сбрасывается в 0 в CSR. Биты, равные 0 в rs1, сохраняют своё значение.

csrrc rd, csr, rs1

Регистр rs1 работает как маска — шаблон, единичные биты которого выбирают, какие биты изменять. Приведённые ниже строки сбрасывают бит 3 в mstatus, что отключает глобальное разрешение прерываний, и оставляют предыдущее значение в t1.

li t0, 8
csrrc t1, mstatus, t0

Когда rs1 равен zero, CSR читается и никогда не записывается. Когда rd равен zero, старое значение отбрасывается, что является сокращением csrc. См. csrrs для установки битов и csrrw для списка CSR в этом симуляторе.

Руководство RISC-V говорит, что csrrc с rs1=x0 вообще не записывает CSR.

Пример

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