csrsi
псевдоlyszt.net охватывает csrsi и другие инструкции RISC-V более подробно.
Описание
csrsi устанавливает биты в управляющем регистре из константы. Регистр управления и состояния, или CSR, хранит состояние процессора, такое как адрес обработчика ловушек и переключатели прерываний (см. csrrw). Константа uimm — это число от 0 до 31, потому что она хранится в 5 битах. Приведённая ниже форма устанавливает каждый бит CSR, который равен 1 в uimm, и оставляет остальные биты без изменений.
csrsi csr, uimm
Это псевдоинструкция, читаемое имя, которое ассемблер переписывает в реальную инструкцию. Она превращается в приведённую ниже инструкцию, где rd — это zero, поэтому старое значение отбрасывается.
csrrsi zero, csr, uimm
Следующая строка включает глобальное разрешение прерываний. 8 — это двоичное 1000, поэтому она устанавливает бит 3 регистра mstatus.
csrsi mstatus, 8
Таким способом можно установить только биты с 0 по 4, поэтому для бита 11 регистра mie нужен csrs с регистром. Очистку битов см. в csrci.
Разворачивается в
csrrsi zero, csr, uimm
Ассемблер заменяет эту псевдоинструкцию реальной инструкцией или инструкциями, перечисленными выше.
Пример
csrsi mstatus, 8 # sets bit 3 of mstatus
