csrrw
يغطي lyszt.net csrrw وتعليمات RISC-V الأخرى بمزيد من التفصيل.
الوصف
يتبادل csrrw سجل تحكم مع سجل عام. سجل التحكم والحالة (CSR) هو سجل خاص يحتفظ بحالة المعالج، بما في ذلك عنوان معالج الفخاخ وما إذا كانت المقاطعات ممكّنة. يحتوي CSR على رقم من 12 بت وعادةً اسم مثل mtvec. لا يمكن لتعليمات CSR فقط الوصول إلى سجلات CSR، ولا يمكن لـ lw أو sw ذلك. يرمز الاسم إلى atomic read and write CSR. تعني Atomic أن القراءة والكتابة تحدثان كخطوة واحدة غير قابلة للتجزئة.
csrrw rd, csr, rs1
تُكتب القيمة القديمة لـ CSR في rd، وتُكتب قيمة rs1 في CSR. يحفظ السطر أدناه العنوان الموجود في t0 في mtvec ويترك قيمة mtvec السابقة في t1.
csrrw t1, mtvec, t0
إذا كان rd هو zero، فسيتم تجاهل القيمة القديمة ولا تتم قراءة CSR. هذا الشكل هو اختصار csrw. إذا كان rs1 هو zero، فسيتم استبدال CSR بـ 0.
يوفر هذا المحاكي ستة سجلات CSR: mstatus وmie وmtvec وmepc وmcause وmip. يتم تجاهل الكتابات إلى mip لأن العتاد يقوم بتعيينه. أي رقم CSR آخر يُقرأ كـ 0 ويتم تجاهل الكتابات إليه. راجع csrr للقراءة وcsrs وcsrc لتغيير بتات مفردة.
ينص دليل RISC-V على أنه مع rd=x0، لا يقرأ csrrw سجل CSR، وأن csrrw مع rs1=x0 يحاول كتابة صفر فيه.
مثال
li t0, 0x100 csrrw t1, mtvec, t0 # mtvec = 0x100, t1 = old mtvec
