ble
pseudolyszt.net couvre ble et d'autres instructions RISC-V plus en détail.
Description
ble effectue un branchement lorsqu'une valeur est inférieure ou égale à une autre. Le nom signifie « branch if less than or equal » (brancher si inférieur ou égal). La forme ci-dessous saute vers l'étiquette lorsque rs1 est au plus égal à rs2, en utilisant une comparaison signée.
ble rs1, rs2, label
ble est une pseudo-instruction qui repose sur l'échange des opérandes, comme le fait bgt. Demander si a est inférieur ou égal à b revient à demander si b est supérieur ou égal à a, donc l'assembleur réécrit ble en bge avec les opérandes inversés. Aucune instruction machine dédiée n'est nécessaire. Voir bge pour le branchement sous-jacent.
ble convient aux boucles et aux intervalles qui incluent leur borne. Une boucle qui s'exécute tant qu'un compteur est au plus égal à n, n inclus, se lit clairement avec ble. La même boucle avec le strict blt nécessite n plus un. Les vérifications d'intervalle l'utilisent aux côtés des autres branchements. Brancher ailleurs si une valeur est inférieure au minimum, brancher ailleurs si elle est supérieure au maximum, et ce qui reste a passé.
Le manuel RISC-V indique que bgt, bgtu, ble et bleu peuvent être synthétisées en inversant les opérandes vers blt, bltu, bge et bgeu.
Les valeurs égales branchent bien avec ble, ce qui en fait l'opposé de bgt sur les mêmes opérandes. Pour toute paire, l'un des deux branche. La comparaison est signée, donc les valeurs peuvent être négatives. blt, bge, bgt et ble donnent ensemble les quatre directions d'ordre signé.
Se développe en
bge rs2, rs1, label
L'assembleur remplace cette pseudo-instruction par la ou les instructions réelles listées ci-dessus.
Exemple
li t0, 2 li t1, 5 ble t0, t1, done # 2 <= 5, so jump to 'done'
