blezPseudoelement

blez

Pseudoelement
RISC-V Assembler Referenz

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