bgtزائف

bgt

زائف
تجميع RISC-V مرجع

يغطي lyszt.net bgt وتعليمات RISC-V الأخرى بمزيد من التفصيل.

الوصف

bgt هو فرع يُفعَّل عندما تكون قيمة واحدة أكبر من أخرى. اسمه اختصار لـ branch if greater than. التعليمة أدناه تقفز إلى التسمية عندما تكون rs1 أكبر تمامًا من rs2، وتقارنهما كقيمتين مُوقَّعتين.

bgt rs1, rs2, label

لا يختبر أي من فروع RISC-V الأساسية الستة حالة greater-than. ما إذا كانت a أكبر من b هو السؤال نفسه عما إذا كانت b أصغر من a مع تبديل المعاملين. bgt تعليمة زائفة، ويعيد المجمّع كتابتها على هيئة blt مع عكس المعاملين. يبقى العتاد أبسط ويمكن مع ذلك كتابة المقارنة في الاتجاه الذي يُقرأ بشكل طبيعي. يُوصف فرع less-than الأساسي ضمن blt.

استخدم bgt عندما تُقرأ الحالة بشكل طبيعي في ذلك الاتجاه، على سبيل المثال التفرع بعيدًا بمجرد أن تتجاوز قيمة حدًّا أقصى، أو بمجرد أن يصبح طول أكبر من المساحة المخصصة له، أو عند اختيار الأكبر من مسارين.

The RISC-V manual states that bgt, bgtu, ble and bleu can be synthesized by reversing the operands to blt, bltu, bge and bgeu.

كلمة Strictly هي الكلمة المحورية. لا يتفرع bgt عندما تكون القيمتان متساويتين. ولحساب القيم المتساوية أيضًا، استخدم bge، الذي يتفرع عند greater than or equal. غالبًا ما تنشأ أخطاء off-by-one في الحلقات والفحوص من هذا التمييز. المقارنة مُوقَّعة. وبالنسبة إلى البيانات غير المُوقَّعة ينطبق التبديل نفسه على bltu.

يوسّع إلى

blt rs2, rs1, label

يستبدل المُجمِّع هذه التعليمة الزائفة بالتعليمة الحقيقية أو التعليمات المذكورة أعلاه.

مثال

li t0, 5
li t1, 2
bgt t0, t1, done   # 5 > 2, so jump to 'done'