bge

bge

تجميع RISC-V مرجع

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

تنسيق الترميز

R
31–25funct7
24–20rs2
19–15rs1
14–12funct3
11–7rd
6–0opcode
I
31–20imm[11:0]
19–15rs1
14–12funct3
11–7rd
6–0opcode
S
31–25imm[11:5]
24–20rs2
19–15rs1
14–12funct3
11–7imm[4:0]
6–0opcode
B
31–25imm[12,10:5]
24–20rs2
19–15rs1
14–12funct3
11–7imm[4:1,11]
6–0opcode
U
31–12imm[31:12]
11–7rd
6–0opcode
J
31–12imm[20,10:1,11,19:12]
11–7rd
6–0opcode

الوصف

bge يتناغم مع blt ويعكس شرطه. الحروف تمثل “branch if greater than or equal” (فرع إذا كان أكبر أو يساوي). عندما يكون rs1 على الأقل rs2، فإن التعليمات أدناه تقفز إلى الموضع المسمى. وإلا تستمر التنفيذ إلى التعليمات التالية.

bge rs1, rs2, label

لكل زوج من القيم، يتفرع إما blt أو bge، لذا تغطي الاثنين جميع الحالات. يتم وصف المقارنة تحت blt، والفروع بشكل عام تحت beq.

يظهر bge عادةً في أعلى حلقة كاختبار الخروج. السطر أدناه يخرج من الحلقة بمجرد أن يصل العداد t1 إلى حدّه t2.

bge t1, t2, done

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

جزء “أو يساوي” يحدد السلوك عند الحدّ. يفرّع bge عندما تكون القيمتان متساويتين، وغالبًا ما تعود أخطاء off‑by‑one في الحلقات إلى هذا الحدّ. تتوقف حلقة العدّ من 0 إلى n عندما يصل العداد إلى n.

وفقًا لدليل RISC‑V، يفرّع bge و bgeu عندما يكون rs1 أكبر أو يساوي rs2، مقارنًة القيم الموقعة وغير الموقعة على التوالي. إزاحة الفرع هي قيمة 12‑بت تُقاس بمضاعفات 2 بايت.

مثل blt، المقارنة موقعة، لذا تُسمح بالقيم السالبة. bgeu هو الشكل غير الموقَّع، يُستخدم للعنوان والأحجام. استخدام شائع هو التحقق من أن قيمة ما غير سالبة، كما في السطر أدناه.

bge t0, zero, ok

مثال

bge t1, t2, done   # leave the loop once i >= n