addi
يغطي lyszt.net addi وتعليمات RISC-V الأخرى بمزيد من التفصيل.
تنسيق الترميز
الوصف
يضيف addi ثابتًا إلى سجل. الاسم اختصار لـ add immediate. القيمة الفورية (immediate) هي قيمة ثابتة مكتوبة في التعليمة نفسها بدلًا من قراءتها من سجل. استخدمها عندما يكون أحد الرقمين ثابتًا عند كتابة البرنامج، مثل إضافة 1 إلى عدّاد.
يظهر شكل addi أدناه. يقرأ القيمة في سجل المصدر rs1، ويضيف الثابت imm، ويكتب النتيجة في سجل الوجهة rd.
addi rd, rs1, imm
يقرأ السطر التالي t0، ويضيف واحدًا، ويكتب النتيجة مرة أخرى، لذا t0 = t0 + 1.
addi t0, t0, 1
يشغل الثابت 12 بتة وهو مُوقَّع، ما يعطي نطاقًا من -2048 إلى 2047. يرفض المُجمِّع القيم الأكبر. للحصول على ثابت أكبر، حمّله أولًا في سجل باستخدام li. الثابت السالب يجعل addi يطرح أيضًا، ولهذا لا تملك RISC-V تعليمة طرح فوري منفصلة. يعدّ السطر التالي تنازليًا.
addi t0, t0, -1
يسمي دليل RISC-V الثابت قيمة فورية مُوسَّعة الإشارة من 12 بتة. ويذكر أن تجاوز السعة الحسابي يُتجاهل، لذا تحتفظ النتيجة فقط ببتاتها الدنيا XLEN، حيث XLEN هو عرض السجل بالبتات، وهو هنا 32. عندما تكون إشارة الثابت معروفة، يتحقق فرع واحد بعد الجمع من التجاوز المُوقَّع. يتعامل السطران أدناه مع الحالة الشائعة لإضافة ثابت موجب.
addi t0, t1, +imm blt t0, t1, overflow
تستخدم البرامج addi للعدّادات، ولنقل مؤشر إلى العنصر التالي، ولحجز مساحة على المكدس. يضيف المثال 1 لتقدّم عدّاد ويضيف -16 لحجز 16 بايت من ذاكرة العمل، وهكذا تبدأ عادةً دالة تحتاج إلى مساحة عمل.
مثال
addi t0, t0, 1 # t0++ addi sp, sp, -16 # reserve 16 bytes of stack
المصادر
- [1]RISC-V International. The RISC-V Instruction Set Manual, Volume I: Unprivileged Architecture. Version 20260120. Section 2.4.1, Integer Register-Immediate Instructions, pages 28 to 29.
- [2]RISC-V International. The RISC-V Instruction Set Manual, Volume I: Unprivileged Architecture. Version 20260120. Section 2.4, Integer Computational Instructions, page 27.
