पंजीकरण

पंजीकरण

रजिस्टर: CPU के हाथ

पहले, बिट क्या है? एक बिट एक एकल 0 या 1 है, वह सबसे छोटी सूचना इकाई जिसे कंप्यूटर स्टोर कर सकता है। इन्हें 32 एक साथ रखें और आपके पास एक 32‑बिट संख्या हो जाती है, जो 0 से लगभग 4 बिलियन तक गिन सकती है। RISC‑V में हर रजिस्टर और हर मेमोरी स्लॉट में एक 32‑बिट संख्या होती है।

एक रजिस्टर प्रोसेसर के अंदर एक छोटा स्टोरेज स्लॉट है जो एक 32‑बिट संख्या रखता है। RISC‑V 32 रजिस्टर प्रदान करता है। चूंकि वे प्रोसेसर कोर में स्थित हैं, रजिस्टर मुख्य मेमोरी की तुलना में बहुत तेज़ होते हैं, क्रमशः। इनमें से कुछ आपके अधिकांश कोड को कवर करेंगे: t0 से t2 (अस्थायी मान), a0 से a2 (आर्गुमेंट्स और परिणाम), zero (हमेशा 0), sp (स्टैक पॉइंटर), और ra (रिटर्न एड्रेस)।

ℹ
सिम्युलेटर टैब प्रत्येक रजिस्टर को दिखाता है जैसे-जैसे प्रोग्राम चल रहा है, उसका मान बदलता है। उस दृश्य को देखना रजिस्टरों के व्यवहार को समझने का सबसे तेज़ तरीका है।
आपका पहला कार्यक्रम: 42 प्रिंट करें
# 42 का संख्या प्रिंट करें, फिर बाहर निकलें।
# a7 सेवा चुनता है और a0 मान ले जाता है।
li a7, 1 # सेवा 1 = पूर्णांक प्रिंट करें
li a0, 42 # प्रिंट करने के लिए मूल्य
ecall # करें
li a7, 10 # सेवा 10 = बाहर निकलें
ecall

का मतलब है load immediate, और यह एक स्थिरांक को रजिस्टर में रखता है। सेवा 1 चुनता है, जो एक पूर्णांक प्रिंट करता है। प्रिंट करने के लिए संख्या को a0 में रखता है। नियंत्रण को सिस्टम को देता है, जो a0 में मान प्रिंट करता है। फिर एग्जिट सेवा चुनता है, और प्रोग्राम समाप्त करता है। Run दबाएँ, फिर 42 बदलें और प्रोग्राम को फिर से चलाएँ।

कार्यक्रम निष्पादन
0x400000li a7, 1
0x400004li a0, 42
0x400008ecall
0x40000cli a7, 10
0x400010ecall
a71
a0—
आउटपुट—
pc0x400000

a7 को 1 पर सेट करने से अगला ecall एक संख्या प्रिंट करता है।

नीचे दिया गया चित्र पाँच पंक्तियों का अनुसरण करता है जैसे ही सिम्युलेटर उन्हें निष्पादित करता है। प्रत्येक पंक्ति वह पता रखती है जो प्रोग्राम लोड होने पर कब्जा करती है, और पते चार बाइट्स के अंतर पर होते हैं क्योंकि हर RISC‑V निर्देश चार बाइट चौड़ा होता है। pc नामक बॉक्स, जिसका पूरा नाम program counter है, वर्तमान में हाइलाइट की गई पंक्ति का पता रखता है। यह संख्या ही प्रोसेसर को प्रोग्राम में उसकी स्थिति के बारे में पता है: यह program counter में पते पर निर्देश को प्राप्त करता है, उसे निष्पादित करता है, फिर अगले निर्देश तक पहुँचने के लिए program counter में चार जोड़ता है। एक रजिस्टर अपना मान तब प्राप्त करता है जब उसकी पंक्ति पर निष्पादित होता है, और आउटपुट केवल तब दिखाई देता है जब पहला चलता है।