csrc
псевдо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
