csrrछद्म

csrr

छद्म
RISC-V असेंबली संदर्भ

lyszt.net csrr और अन्य RISC-V निर्देशों को अधिक विस्तार से कवर करता है।

विवरण

csrr एक कंट्रोल रजिस्टर को एक जनरल रजिस्टर में पढ़ता है। एक कंट्रोल और स्टेटस रजिस्टर, या CSR, प्रोसेसर की स्थिति रखता है जैसे कि ट्रैप हैंडलर का पता और अंतिम ट्रैप का कारण (देखें csrrw)। नीचे दिया गया रूप CSR के मान को rd में कॉपी करता है।

csrr rd, csr

असेम्बलर इसे एक स्यूडो-इंस्ट्रक्शन के रूप में मानता है, एक पठनीय नाम जिसे यह एक वास्तविक इंस्ट्रक्शन में फिर से लिखता है। यह नीचे दिए गए इंस्ट्रक्शन में बदल जाता है। चूंकि rs1 zero है, CSR पढ़ा जाता है और इसमें कुछ भी नहीं लिखा जाता है।

csrrs rd, csr, zero

एक ट्रैप हैंडलर दो CSRs पढ़कर शुरू होता है। mepc बाधित इंस्ट्रक्शन का पता रखता है और mcause ट्रैप का कारण रखता है।

csrr t0, mcause

mcause का शीर्ष बिट एक इंटरप्ट के लिए 1 है और एक अपवाद के लिए 0 है। निचले बिट्स कारण कोड हैं। इस सिम्युलेटर में बटन इंटरप्ट 0x8000000b छोड़ता है, जो कोड 11 के साथ एक इंटरप्ट है, मशीन एक्सटर्नल इंटरप्ट।

RISC-V मैनुअल csrr rd, csr को csrrs rd, csr, x0 के रूप में परिभाषित करता है।

विस्तृत होता है

csrrs rd, csr, zero

असेंबलर इस छद्म-निर्देश को ऊपर सूचीबद्ध वास्तविक निर्देश या निर्देशों से बदल देता है।

उदाहरण

csrr t0, mstatus   # t0 = mstatus