bgez
زائفيغطي lyszt.net bgez وتعليمات RISC-V الأخرى بمزيد من التفصيل.
الوصف
يتفرع bgez عندما تكون القيمة في السجل صفرًا أو موجبة. يعني الاسم branch if greater than or equal to zero. يقفز النموذج أدناه إلى الموضع المُعنون عندما تكون rs على الأقل صفرًا، وينتقل إلى التعليمة التالية بخلاف ذلك.
bgez rs, label
يتعامل المُجمِّع معه كتعليمة شبهية ويعيد كتابته إلى التعليمة أدناه، التي تقارن السجل بـ zero، وهو السجل الذي يحمل دائمًا القيمة 0.
bge rs, zero, label
المقارنة مُوقَّعة، لذا تُقرأ البتات الـ 32 في السجل كعدد يمكن أن يكون سالبًا. يُعد الصفر مطابقة، وهذا ما يميز bgez عن bgtz. وهو عكس bltz، لذا لأي قيمة يتفرع واحد فقط من الاثنين. راجع bge لمقارنة سجلين.
bgez هو الاختبار الطبيعي لقيمة يجب ألا تكون سالبة، مثل طول أو عدد أو فهرس. يستخدمه البرنامج الذي يطرح واحدًا من عدّاد ويستمر في التكرار ما دام العدّاد لم ينزل تحت الصفر في نهاية الحلقة.
addi t0, t0, -1 bgez t0, loop
تتكرر الحلقة أعلاه ما دام t0 يساوي 0 أو أكثر بعد الطرح، لذا تعمل مرة أخرى عندما يكون t0 مساويًا 0 وتتوقف عندما يصل t0 إلى -1.
يوسّع إلى
bge rs, zero, label
يستبدل المُجمِّع هذه التعليمة الزائفة بالتعليمة الحقيقية أو التعليمات المذكورة أعلاه.
مثال
li t0, 4 bgez t0, done # t0 >= 0, so jump to 'done'
