bltzزائف

bltz

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

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

الوصف

يتفرع bltz عندما يحمل سجل عددًا سالبًا. يعني الاسم branch if less than zero (تفرّع إذا كان أقل من صفر). يقفز النموذج أدناه إلى الموضع المُعنون إذا كان rs أقل من صفر، ويتابع إلى التعليمة التالية خلاف ذلك.

bltz rs, label

يعيد المُجمّع كتابة هذه التعليمة الشبه-تعليمة إلى تعليمة حقيقية. تصبح التعليمة أدناه، التي تقارن السجل بـ zero، السجل الذي يحمل 0 دائمًا.

blt rs, zero, label

المقارنة مُوقّعة، لذا تُقرأ البتات الـ 32 في السجل كعدد يمكن أن يكون سالبًا. يقارن التفرع سجلين ولا يمكنه أخذ ثابت مكتوب في التعليمة، ولهذا يأتي 0 من السجل zero. راجع blt للتفرعات التي تقارن قيمتين وbeq لمعرفة كيفية عمل العناوين.

للتحقق مما إذا كانت قيمة أقل من صفر، ضع القيمة في سجل واستخدم bltz عليها. الحالات المعتادة هي اختبار نتيجة طرح لمعرفة ما إذا نزلت تحت الصفر، واختبار نتيجة دالة تُبلّغ عن خطأ كعدد سالب.

sub t0, t1, t2
bltz t0, smaller

تقفز الأسطر أعلاه إلى smaller عندما تكون نتيجة الطرح أقل من صفر. النتيجة التي تساوي 0 بالضبط ليست سالبة وتتابع إلى التعليمة التالية. التفرع المعاكس، الذي يأخذ صفرًا أيضًا، هو bgez.

يوسّع إلى

blt rs, zero, label

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

مثال

li t0, -3
bltz t0, done   # t0 < 0, so jump to 'done'