csrrs
lyszt.net охоплює csrrs та інші інструкції RISC-V більш детально.
Опис
csrrs читає керуючий регістр і встановлює в ньому біти. Керуючий регістр і регістр стану, або CSR, зберігає стан процесора, такий як адреса обробника пасток і перемикачі переривань (див. csrrw). Назва — скорочення від atomic read and set bits in CSR (атомарне читання та встановлення бітів у CSR). Старе значення CSR потрапляє в rd, потім кожен біт, який дорівнює 1 у rs1, встановлюється в 1 у CSR. Біти, які дорівнюють 0 у rs1, зберігають своє значення.
csrrs rd, csr, rs1
Регістр rs1 працює як маска — шаблон, одиничні біти якого вибирають, які біти змінювати. Наведені нижче рядки встановлюють біт 3 регістра mstatus, глобальний дозвіл переривань, і залишають попереднє значення в t1.
li t0, 8 csrrs t1, mstatus, t0
8 — це двійкове 1000, тому змінюється лише біт 3. Коли rs1 дорівнює zero, CSR читається і ніколи не записується, що є скороченням csrr. Коли rd дорівнює zero, старе значення відкидається, що є скороченням csrs. Див. csrrw для списку CSR у цьому симуляторі та csrrc для очищення бітів.
Посібник RISC-V каже, що csrrs з rs1=x0 взагалі не записує CSR.
Приклад
li t0, 8 csrrs t1, mstatus, t0 # sets bit 3 of mstatus, t1 = old mstatus
