csrrs

csrrs

Асемблер RISC-V Посилання

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