Podcast
Questions and Answers
ما هو الرقم الخاص بالسجل zero؟
ما هو الرقم الخاص بالسجل zero؟
x0
ما هي وظيفة السجل ra؟
ما هي وظيفة السجل ra؟
عنوان العودة
ما هو الاستخدام الأساسي للسجل sp؟
ما هو الاستخدام الأساسي للسجل sp؟
مؤشر المكدس
ما وظيفة السجل gp؟
ما وظيفة السجل gp؟
Signup and view all the answers
كم عدد السجلات المؤقتة t0 - t2 الموجودة؟
كم عدد السجلات المؤقتة t0 - t2 الموجودة؟
Signup and view all the answers
أي من التعليمات التالية تُمثل عملية الضرب؟
أي من التعليمات التالية تُمثل عملية الضرب؟
Signup and view all the answers
العملية 'div' تمثل ماذا في مجموعة تعليمات RISC-V؟
العملية 'div' تمثل ماذا في مجموعة تعليمات RISC-V؟
Signup and view all the answers
ما هي التعليمات المعادلة لتعليمات c.addi4spn؟
ما هي التعليمات المعادلة لتعليمات c.addi4spn؟
Signup and view all the answers
ما النوع الذي ينتمي إليه سجل s0/fp؟
ما النوع الذي ينتمي إليه سجل s0/fp؟
Signup and view all the answers
Study Notes
تسجيلات معالج RISC-V
- يحتوي معالج RISC-V على أربع وثلاثين سجلًا عامًا، يشار إليها من x0 إلى x31.
- يستخدم كل سجل لتخزين قيمة 32 بت، ويشير رقم السجل إلى اسمه.
- x0 (zero): سجل قراءة فقط (read-only)، و دائمًا يظل قيمته 0.
- x1 (ra): سجل الإرجاع (return address)، و يستخدم لتخزين عنوان الإرجاع بعد مكالمة الدالة.
- x2 (sp): مؤشر المكدس (stack pointer)، و يشير إلى نهاية المكدس.
- x3 (gp): مؤشر العناوين العالمية (global pointer)، و يشير إلى بداية منطقة البيانات العالمية (global data).
- x4 (tp): مؤشر الخيط (thread pointer)، ويشير إلى بداية مساحة ذاكرة الخيط (thread).
- x5 – x7 (t0 – t2): سجلات مؤقتة (temporary registers)، تستخدم لتخزين قيم مؤقتة أثناء تنفيذ التعليمات.
- x8 (s0/fp): سجل محجوز (saved register)، وغالبًا ما يستخدم كمؤشر الإطار (frame pointer).
- x9 (s1): سجل محجوز (saved register)، لتخزين قيم في حالات معينة.
- x10 – x11 (a0 – a1): سجلات وسيطة (argument registers)، تُستخدم لنقل المعاملات (arguments) إلى الدوال.
- x12 – x17 (a2 – a7): سجلات وسيطة (argument registers)، تُستخدم لنقل المعاملات (arguments) إلى الدوال.
- x18 – x27 (s2 – s11): سجلات محجوزة (saved registers) لتخزين قيم في حالات معينة.
- x28 – x31 (t3 – t6): سجلات مؤقتة (temporary registers) تستخدم لتخزين قيم مؤقتة أثناء تنفيذ التعليمات.
تعليمات الضرب والقسمة في RISC-V
- يستخدم مجموع تعليمات RVM (RISC-V Multiply and Divide) تعليمات الضرب والقسمة في معمارية RISC-V.
- تتضمن تعليمات الضرب والقسمة تسعة تعليمات، يتم تحديدها عن طريق opcode و funct3 و funct7.
- mul: تعليمات الضرب (multiply)، تجري عملية الضرب بين سجل rs1 وسجل rs2، ثم تُخزن نتيجة الضرب في السجل rd.
- mulh: تعليمات الضرب العالي (multiply high)، تجري عملية الضرب بين سجل rs1 وسجل rs2، ثم تُخزن 32 بت من النتيجة في السجل rd.
- mulhsu: تعليمات الضرب العالي موقعة غير موقعة (multiply high signed unsigned)، تجري عملية الضرب بين سجل rs1 وسجل rs2 (حيث rs1 موقعة و rs2 غير موقعة)، ثم تُخزن 32 بت من النتيجة في السجل rd.
- mulhu: تعليمات الضرب العالي غير موقعة (multiply high unsigned)، تجري عملية الضرب بين سجل rs1 وسجل rs2، ثم تُخزن 32 بت من النتيجة في السجل rd.
- div: تعليمات القسمة الموقعة (divide signed)، تجري عملية القسمة بين سجل rs1 وسجل rs2، ثم تُخزن نتيجة القسمة في السجل rd.
- divu: تعليمات القسمة غير الموقعة (divide unsigned)، تجري عملية القسمة بين سجل rs1 وسجل rs2، ثم تُخزن نتيجة القسمة في السجل rd.
- rem: تعليمات الباقي الموقعة (remainder)، تجري عملية القسمة بين سجل rs1 وسجل rs2، ثم تُخزن الباقي في السجل rd.
- remu: تعليمات الباقي غير الموقعة (remainder unsigned)، تجري عملية القسمة بين سجل rs1 وسجل rs2، ثم تُخزن الباقي في السجل rd.
RISC-V تعليمات مضغوطة (16-bit)
- تستخدم تعليمات RVC (RISC-V Compressed) صيغًا مختصرة لتعليمات RISC-V، مما يسمح بتقليل حجم الكود.
- يتم تحديد format التعليمات من خلال بت opcode و instr15:10، بالإضافة إلى بتات اضافية.
- CIW: تعليمات 16 بت للضرب 4 (c.addi4spn rd', sp, imm)
- CL: تعليمات 16 بت لتحميل البيانات (c.fld fd', imm(rs1') - c.lw rd', imm(rs1'))
- CSS: تعليمات 16 بت لحفظ البيانات (c.fsd fd', imm(rs1') - c.sw rd', imm(rs1'))
- CJ, CB, CB', CI, CL, CSS, CS, CS': صيغ مختلفة لتعليمات 16 بت.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.