csrrs

csrrs

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

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

الوصف

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

csrrs rd, csr, rs1

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