bgtz
Pseudoelementlyszt.net behandelt bgtz und andere RISC-V-Befehle ausführlicher.
Beschreibung
bgtz führt einen Sprung aus, wenn der Wert in einem Register positiv ist. Der Name bedeutet „branch if greater than zero“ (verzweigen, wenn größer als null). Die folgende Form springt zur beschrifteten Position, wenn rs größer als null ist, und fällt andernfalls zur nächsten Anweisung durch.
bgtz rs, label
Der Assembler behandelt sie als Pseudo-Anweisung und schreibt sie in die folgende Anweisung um, die fragt, ob zero kleiner als das Register ist.
blt zero, rs, label
RISC-V hat keinen Sprung für „größer als“, daher werden die Operanden vertauscht und der Kleiner-als-Sprung erledigt die Arbeit, genauso wie bgt aufgebaut ist. Der Vergleich ist vorzeichenbehaftet. Null verzweigt nicht, was bgtz von bgez unterscheidet. Siehe blt für den zugrunde liegenden Sprung.
bgtz passt zu einer Schleife, die fortgesetzt werden soll, solange noch etwas zu verarbeiten ist, etwa ein Zähler verbleibender Elemente, der größer als null ist. Er prüft auch, ob ein Ergebnis größer als null ist.
bgtz a0, found
Die obige Zeile springt zu found, wenn a0 1 oder mehr enthält. Ein Wert von 0 oder eine beliebige negative Zahl setzt mit der nächsten Anweisung fort.
Wird erweitert zu
blt zero, rs, label
Der Assembler ersetzt diese Pseudoanweisung durch die oben aufgeführte(n) echte(n) Anweisung(en).
Beispiel
li t0, 4 bgtz t0, done # t0 > 0, so jump to 'done'
