bgtz
pseudolyszt.net couvre bgtz et d'autres instructions RISC-V plus en détail.
Description
bgtz effectue un branchement lorsque la valeur dans un registre est positive. Le nom signifie « branch if greater than zero » (brancher si supérieur à zéro). La forme ci-dessous saute vers la position étiquetée lorsque rs est supérieur à zéro, et passe sinon à l'instruction suivante.
bgtz rs, label
L'assembleur la traite comme une pseudo-instruction et la réécrit en l'instruction ci-dessous, qui demande si zero est inférieur au registre.
blt zero, rs, label
RISC-V n'a pas de branchement pour « supérieur à », donc les opérandes sont échangés et le branchement « inférieur à » fait le travail, de la même manière que bgt est construit. La comparaison est signée. Zéro ne branche pas, ce qui distingue bgtz de bgez. Voir blt pour le branchement sous-jacent.
bgtz convient à une boucle qui doit continuer tant qu'il reste quelque chose à traiter, comme un compteur d'éléments restants supérieur à zéro. Il teste aussi si un résultat est supérieur à zéro.
bgtz a0, found
La ligne ci-dessus saute vers found lorsque a0 contient 1 ou plus. Une valeur de 0 ou tout nombre négatif passe à l'instruction suivante.
Se développe en
blt zero, rs, label
L'assembleur remplace cette pseudo-instruction par la ou les instructions réelles listées ci-dessus.
Exemple
li t0, 4 bgtz t0, done # t0 > 0, so jump to 'done'
