blt
lyszt.net couvre blt et d'autres instructions RISC-V plus en détail.
Format d'encodage
Description
blt compare deux valeurs et effectue un branchement lorsque la première est plus petite. beq et bne testent plutôt l'égalité. Le nom signifie « branch if less than » (brancher si inférieur à). La forme ci-dessous saute à la position étiquetée lorsque rs1 est inférieur à rs2, et passe sinon à l'instruction suivante.
blt rs1, rs2, label
La page beq explique les branchements, les étiquettes et le fonctionnement d'un saut.
La comparaison traite les deux valeurs comme signées, elles peuvent donc être négatives. -1 est inférieur à 0, et tout nombre négatif est inférieur à tout nombre positif. Les comparaisons non signées utilisent une instruction distincte, bltu, et les deux diffèrent pour toute valeur dont le bit de poids fort est à 1.
Les boucles de comptage reposent sur blt. La ligne ci-dessous se répète tant que le compteur t0 reste inférieur à sa limite t1.
blt t0, t1, loop
Une fois que le compteur atteint la limite, le branchement n'est pas pris et la boucle se termine. Les vérifications de limites utilisent la même instruction pour maintenir une valeur sous un maximum avant que le programme ne l'utilise.
Le manuel RISC-V spécifie que blt et bltu prennent le branchement lorsque rs1 est inférieur à rs2, en comparant respectivement en signé et en non signé. Il note également que bgt, bgtu, ble et bleu peuvent être synthétisés en inversant les opérandes de blt, bltu, bge et bgeu.
RISC-V ne fournit pas de branchement si supérieur. Pour tester si a est supérieur à b, inversez la comparaison et testez si b est inférieur à a. L'assembleur offre un raccourci bgt qui échange les opérandes pour vous.
Exemple
li t0, 2 li t1, 5 blt t0, t1, done # 2 < 5, so jump to 'done'
