add
يغطي lyszt.net add وتعليمات RISC-V الأخرى بمزيد من التفصيل.
تنسيق الترميز
الوصف
يجمع add القيمتين في سجلين ويخزّن النتيجة في سجل ثالث. السجل عبارة عن خانة صغيرة داخل المعالج تحمل عددًا واحدًا من 32 بت. يوفّر RISC-V 32 سجلًا. البت هو إما 0 أو 1، و32 بت تغطي الأعداد الصحيحة من 0 حتى نحو أربعة مليارات. تجري العمليات الحسابية بين السجلات ولا تلمس الذاكرة مباشرة أبدًا.
يكون add بالصيغة أدناه، والنتيجة هي rd = rs1 + rs2. rd هو سجل الوجهة، حيث تذهب الإجابة. وrs1 وrs2 هما السجلان المصدران، وتبقى قيماهما كما هي.
add rd, rs1, rs2
يمكن أن يكون سجل الوجهة مصدرًا أيضًا. يضيف السطر أدناه t1 إلى t0 ويعيد النتيجة إلى t0. تستخدم المجاميع التراكمية في الحلقات هذه الصيغة.
add t0, t0, t1
يحمل السجل 32 بت على الأكثر. عندما يتجاوز المجموع أكبر قيمة يمكن للسجل حملها، يلتفّ الناتج إلى عدد صغير، تمامًا كما تعود ساعة بنظام 24 ساعة من 23:59 إلى 00:00. هذا هو الطفح، ولا يعطي RISC-V أي تحذير عند حدوثه.
ينص دليل RISC-V على أن أي تعليمة حسابية صحيحة لا ترفع استثناءً حسابيًا، وأن مجموعة التعليمات الأساسية لا تتضمن فحوصات الطفح لأن الفروع تتولى هذه المهمة بتكلفة منخفضة. بالنسبة للجمع غير المؤشّر، تكفي فرع واحد بعد add. في السطرين أدناه، يقفز الفرع إلى التسمية overflow عندما يكون المجموع أقل من أحد المعاملين، وهذا لا يحدث إلا إذا التفّ المجموع.
add t0, t1, t2 bltu t0, t1, overflow
في المثال، يستخدم السطران الأولان li (load immediate) لوضع الثابتين 3 و4 في t0 وt1. ثم يترك سطر add القيمة 7 في t2.
مثال
li t0, 3 li t1, 4 add t2, t0, t1 # t2 = 7
المصادر
- [1]RISC-V International. The RISC-V Instruction Set Manual, Volume I: Unprivileged Architecture. Version 20260120. Section 2.4, Integer Computational Instructions, page 27.
- [2]RISC-V International. The RISC-V Instruction Set Manual, Volume I: Unprivileged Architecture. Version 20260120. Section 2.4.2, Integer Register-Register Instructions, page 29.
