blez
Pseudoelementlyszt.net behandelt blez und andere RISC-V-Befehle ausführlicher.
Beschreibung
blez führt einen Sprung aus, wenn der Wert in einem Register null oder negativ ist. Der Name bedeutet „branch if less than or equal to zero“. Die folgende Form springt zur beschrifteten Position, wenn rs höchstens null ist, und fällt andernfalls zur nächsten Anweisung durch.
blez rs, label
Der Assembler behandelt sie als Pseudo-Anweisung und schreibt sie in die folgende Anweisung um, die fragt, ob zero größer oder gleich dem Register ist.
bge zero, rs, label
Die Operanden werden vertauscht, weil RISC-V keinen Kleiner-gleich-Sprung hat, also erledigt bge die Arbeit, genauso wie ble aufgebaut ist. Der Vergleich ist vorzeichenbehaftet. Null springt, was blez von bltz unterscheidet, und es ist das Gegenteil von bgtz, sodass für jeden Wert genau einer der beiden den Sprung ausführt. Siehe bge für den zugrunde liegenden Sprung.
blez eignet sich für eine Prüfung, ob nichts mehr zu tun ist. Eine Schleife, die eine Anzahl verbleibender Elemente verarbeitet, kann verlassen werden, sobald die Anzahl null ist oder darunter gefallen ist.
blez t0, done
Die obige Zeile springt zu done, wenn t0 0 oder negativ ist.
Wird erweitert zu
bge zero, rs, label
Der Assembler ersetzt diese Pseudoanweisung durch die oben aufgeführte(n) echte(n) Anweisung(en).
Beispiel
li t0, 0 blez t0, done # t0 <= 0, so jump to 'done'
