csrrci
lyszt.net охватывает csrrci и другие инструкции RISC-V более подробно.
Описание
csrrci — это csrrc с константной маской вместо регистра. Буква i означает immediate (непосредственное значение), то есть константу, записанную в инструкции. Константа uimm — это число от 0 до 31, поскольку она хранится в 5 битах. Старое значение CSR записывается в rd, затем каждый бит, равный 1 в uimm, сбрасывается в 0 в CSR.
csrrci rd, csr, uimm
Следующая строка сбрасывает бит 3 mstatus, что отключает глобальное разрешение прерываний, и оставляет предыдущее значение в t1. Число 8 — это двоичное 1000.
csrrci t1, mstatus, 8
Таким способом можно сбрасывать только биты с 0 по 4. Когда uimm равен 0, CSR читается, но не записывается. Когда rd — это zero, старое значение отбрасывается, что является сокращением csrci. См. csrrc для регистровой формы.
Пример
csrrci t1, mstatus, 8 # clears bit 3 of mstatus, t1 = old mstatus
