csrrc

csrrc

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

lyszt.net охоплює csrrc та інші інструкції RISC-V більш детально.

Опис

csrrc читає регістр керування та скидає в ньому біти. Регістр керування та стану, або CSR, зберігає стан процесора, як-от адресу обробника пасток і перемикачі переривань (див. csrrw). Назва — скорочення від атомарного читання та скидання бітів у CSR. Старе значення CSR потрапляє в rd, потім кожен біт, що дорівнює 1 у rs1, скидається в 0 у CSR. Біти, що дорівнюють 0 у rs1, зберігають своє значення.

csrrc rd, csr, rs1

Регістр rs1 працює як маска — шаблон, одиничні біти якого вибирають, які біти змінювати. Наведені нижче рядки скидають біт 3 у mstatus, що вимикає глобальний дозвіл переривань, і залишають попереднє значення в t1.

li t0, 8
csrrc t1, mstatus, t0

Коли rs1 дорівнює zero, CSR читається й ніколи не записується. Коли rd дорівнює zero, старе значення відкидається, що є скороченням csrc. Див. csrrs для встановлення бітів і csrrw для списку CSR у цьому симуляторі.

Посібник RISC-V каже, що csrrc з rs1=x0 взагалі не записує CSR.

Приклад

li t0, 8
csrrc t1, mstatus, t0   # clears bit 3 of mstatus, t1 = old mstatus