سجلات

سجلات

سجلات: أيدي المعالج

أولاً، ما هي البتة؟ البتة هي 0 أو 1 واحدة، وهي أصغر وحدة معلومات يمكن للحاسوب تخزينها. ضع 32 منها معًا فتحصل على عدد 32 بت، يمكنه العد من 0 حتى حوالي 4 مليارات. كل سجل وكل خانة ذاكرة في RISC-V تحمل عددًا واحدًا من 32 بت.

السجل هو خانة تخزين صغيرة داخل المعالج تحمل عددًا واحدًا من 32 بت. يوفر RISC-V 32 سجلًا. ولأنها تقع داخل نواة المعالج، فاستخدام السجلات أسرع بكثير من الذاكرة الرئيسية، بفروق تصل إلى رتب متعددة. عدد قليل منها سيغطي معظم ما تكتبه: t0 حتى t2 (قيم مؤقتة)، وa0 حتى a2 (الوسائط والنتائج)، وzero (دائمًا 0)، وsp (مؤشر المكدس)، وra (عنوان العودة).

ℹ
يعرض تبويب Simulator كل سجل أثناء تغيّر قيمته بينما يعمل البرنامج. ومشاهدة ذلك العرض هي أسرع طريقة لاكتساب إحساس بكيفية تصرف السجلات.
برنامجك الأول: طباعة 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، يحمل عنوان السطر المميز حاليًا. هذا الرقم هو كل ما يعرفه المعالج عن موضعه في البرنامج: فهو يجلب التعليمة عند العنوان الموجود في عداد البرنامج، وينفذها، ثم يضيف أربعة إلى عداد البرنامج للوصول إلى التعليمة التالية. يتلقى السجل قيمته عندما يُنفَّذ في سطره، ولا يظهر الخرج إلا عند تشغيل أول .