bgt
pseudolyszt.net couvre bgt et d'autres instructions RISC-V plus en détail.
Description
bgt est une branche qui se déclenche lorsqu'une valeur est supérieure à une autre. Son nom signifie branch if greater than (branche si supérieur à). L'instruction ci-dessous saute vers l'étiquette lorsque rs1 est strictement supérieur à rs2, en les comparant comme des valeurs signées.
bgt rs1, rs2, label
Aucune des six branches RISC-V de base ne teste la supériorité. Savoir si a est supérieur à b revient à savoir si b est inférieur à a avec les opérandes échangés. bgt est une pseudo-instruction, et l'assembleur la réécrit en blt avec les opérandes inversés. Le matériel reste plus simple et la comparaison peut toujours s'écrire dans le sens qui se lit naturellement. La branche inférieur-à sous-jacente est décrite sous blt.
Recourez à bgt lorsque la condition se lit naturellement dans ce sens, par exemple pour sauter une fois qu'une valeur dépasse un maximum, qu'une longueur est supérieure à l'espace qui lui est réservé, ou pour choisir le plus grand de deux chemins.
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.
Strictement est le mot déterminant. bgt ne branche pas lorsque les deux valeurs sont égales. Pour compter aussi les valeurs égales, utilisez bge, qui branche sur supérieur ou égal. Les erreurs de décalage d'une unité dans les boucles et les vérifications proviennent généralement de cette distinction. La comparaison est signée. Pour les données non signées, le même échange s'applique à bltu.
Se développe en
blt rs2, rs1, label
L'assembleur remplace cette pseudo-instruction par la ou les instructions réelles listées ci-dessus.
Exemple
li t0, 5 li t1, 2 bgt t0, t1, done # 5 > 2, so jump to 'done'
