csrrc

csrrc

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

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

विवरण

csrrc एक कंट्रोल रजिस्टर को पढ़ता है और उसमें बिट्स को क्लियर करता है। एक कंट्रोल और स्टेटस रजिस्टर, या CSR, प्रोसेसर की स्थिति रखता है जैसे ट्रैप हैंडलर एड्रेस और इंटरप्ट स्विच (देखें csrrw)। यह नाम atomic read and clear bits in CSR का संक्षिप्त रूप है। CSR का पुराना मान rd में जाता है, फिर rs1 में जो भी बिट 1 है, वह CSR में 0 में क्लियर हो जाता है। rs1 में जो बिट 0 हैं, वे अपना मान बनाए रखते हैं।

csrrc rd, csr, rs1

रजिस्टर rs1 एक मास्क की तरह काम करता है, एक पैटर्न जिसके 1 बिट चुनते हैं कि कौन से बिट बदलने हैं। नीचे दी गई पंक्तियाँ mstatus के बिट 3 को क्लियर करती हैं, जो ग्लोबल इंटरप्ट इनेबल को बंद कर देता है, और पिछला मान t1 में छोड़ देता है।

li t0, 8
csrrc t1, mstatus, t0

जब rs1 zero होता है, तो CSR पढ़ा जाता है और कभी लिखा नहीं जाता। जब rd zero होता है, तो पुराना मान त्याग दिया जाता है, जो csrc शॉर्टहैंड है। बिट सेट करने के लिए csrrs देखें और इस सिम्युलेटर में CSRs की सूची के लिए csrrw देखें।

RISC-V मैनुअल कहता है कि rs1=x0 के साथ csrrc CSR को बिल्कुल नहीं लिखता।

उदाहरण

li t0, 8
csrrc t1, mstatus, t0   # clears bit 3 of mstatus, t1 = old mstatus