csrrc

csrrc

تجميع RISC-V مرجع

يغطي lyszt.net csrrc وتعليمات RISC-V الأخرى بمزيد من التفصيل.

الوصف

يقرأ csrrc سجل تحكم ويمسح البتات فيه. يحتفظ سجل التحكم والحالة، أو CSR، بحالة المعالج مثل عنوان معالج الفخاخ ومفاتيح المقاطعة (انظر csrrw). الاسم اختصار لـ atomic read and clear bits in CSR. تنتقل القيمة القديمة لـ CSR إلى rd، ثم تُمسح كل بتة تساوي 1 في rs1 إلى 0 في CSR. أما البتات التي تساوي 0 في rs1 فتحتفظ بقيمتها.

csrrc rd, csr, rs1

يعمل السجل rs1 كقناع، وهو نمط تختار بتاته التي تساوي 1 أي البتات ستتغير. الأسطر أدناه تمسح البتة 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