csrw
زائفيغطي lyszt.net csrw وتعليمات RISC-V الأخرى بمزيد من التفصيل.
الوصف
ينسخ csrw سجلاً إلى سجل تحكم. يحتفظ سجل التحكم والحالة، أو CSR، بحالة المعالج مثل عنوان معالج الفخاخ ومفاتيح المقاطعة (انظر csrrw). ينسخ النموذج أدناه rs إلى CSR ويتجاهل القيمة القديمة.
csrw csr, rs
إنها تعليمة زائفة، أي اسم مقروء يعيد المُجمِّع كتابته إلى تعليمة حقيقية. تصبح التعليمة أدناه، حيث يكون rd هو zero بحيث لا تُقرأ القيمة القديمة.
csrrw zero, csr, rs
الاستخدام الأكثر شيوعاً هو تعيين معالج الفخاخ. تضع الأسطر أدناه عنوان التسمية handler في mtvec.
la t0, handler csrw mtvec, t0
يحدد البتّان الأدنيان في mtvec الوضع. مع 00، يقفز كل فخ إلى العنوان في mtvec. مع 01، المسمى الوضع الموجّه، تقفز المقاطعة إلى العنوان زائد 4 أضعاف رمز سببها، لذا تهبط مقاطعة الزر، رمز 11، عند 44 بايت بعد العنوان الأساسي. يجب أن يكون البتّان الأدنيان للعنوان نفسه حرّين، لأنهما يحملان الوضع.
يعرّف دليل RISC-V التعليمة csrw csr, rs1 على أنها csrrw x0, csr, rs1.
يوسّع إلى
csrrw zero, csr, rs
يستبدل المُجمِّع هذه التعليمة الزائفة بالتعليمة الحقيقية أو التعليمات المذكورة أعلاه.
مثال
li t0, 0x100 csrw mtvec, t0 # mtvec = 0x100
