bgtzPseudoelement

bgtz

Pseudoelement
RISC-V Assembler Referenz

lyszt.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'