csrcпсевдо

csrc

псевдо
RISC-V Ассемблер Ссылка

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

Описание

csrc сбрасывает биты в регистре управления. Регистр управления и состояния, или CSR, хранит состояние процессора, такое как адрес обработчика ловушек и переключатели прерываний (см. csrrw). Приведённая ниже форма сбрасывает каждый бит CSR, равный 1 в rs, и оставляет остальные биты без изменений.

csrc csr, rs

Это псевдоинструкция — читаемое имя, которое ассемблер переписывает в реальную инструкцию. Она превращается в инструкцию ниже, где rd — это zero, так что старое значение отбрасывается.

csrrc zero, csr, rs

Приведённые ниже строки сбрасывают бит 3 mstatus, что отключает глобальное разрешение прерываний.

li t0, 8
csrc mstatus, t0

Процессор сам сбрасывает этот бит, когда начинается ловушка, а mret восстанавливает его, поэтому обработчику это редко нужно. Программа использует csrc, чтобы защитить короткий участок кода от прерываний, а затем снова устанавливает бит с помощью csrs.

Разворачивается в

csrrc zero, csr, rs

Ассемблер заменяет эту псевдоинструкцию реальной инструкцией или инструкциями, перечисленными выше.

Пример

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