csrrsi

csrrsi

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

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

Описание

csrrsi — это csrrs с константной маской вместо регистра. Буква i означает immediate (непосредственный), константу, записанную в инструкцию. Константа uimm — это число от 0 до 31, поскольку она хранится в 5 битах. Старое значение CSR помещается в rd, затем каждый бит, равный 1 в uimm, устанавливается в 1 в CSR.

csrrsi rd, csr, uimm

Следующая строка устанавливает бит 3 mstatus и оставляет предыдущее значение в t1. 8 — это двоичное 1000.

csrrsi t1, mstatus, 8

Таким образом можно установить только биты с 0 по 4. Бит 3 mstatus, глобальное разрешение прерываний, подходит. Бит 11 mie, разрешение внешних прерываний, не подходит, поэтому для него нужен csrrs с регистром, содержащим 0x800. Когда uimm равен 0, CSR читается, а не записывается. Когда rd — это zero, старое значение отбрасывается, что является сокращением csrsi. См. csrrs для регистровой формы.

Пример

csrrsi t1, mstatus, 8   # sets bit 3 of mstatus, t1 = old mstatus