bltzPseudoelement

bltz

Pseudoelement
RISC-V Assembler Referenz

lyszt.net behandelt bltz und andere RISC-V-Befehle ausführlicher.

Beschreibung

bltz verzweigt, wenn ein Register eine negative Zahl enthält. Der Name bedeutet „branch if less than zero“ (verzweige, wenn kleiner als null). Die folgende Form springt zur beschrifteten Position, wenn rs kleiner als null ist, und fährt andernfalls mit der nächsten Anweisung fort.

bltz rs, label

Der Assembler schreibt diese Pseudo-Anweisung in eine echte Anweisung um. Sie wird zur unten stehenden Anweisung, die das Register mit zero vergleicht, dem Register, das immer 0 enthält.

blt rs, zero, label

Der Vergleich ist vorzeichenbehaftet, daher werden die 32 Bits im Register als eine Zahl gelesen, die negativ sein kann. Eine Verzweigung vergleicht zwei Register und kann keine in der Anweisung geschriebene Konstante annehmen, weshalb die 0 aus dem Register zero stammt. Siehe blt für Verzweigungen, die zwei Werte vergleichen, und beq für die Funktionsweise von Beschriftungen.

Um zu prüfen, ob ein Wert kleiner als null ist, legen Sie den Wert in ein Register und verwenden Sie bltz darauf. Die üblichen Fälle sind das Testen des Ergebnisses einer Subtraktion, um zu sehen, ob es unter null gefallen ist, und das Testen eines Funktionsergebnisses, das einen Fehler als negative Zahl meldet.

sub t0, t1, t2
bltz t0, smaller

Die obigen Zeilen springen zu smaller, wenn das Subtraktionsergebnis kleiner als null ist. Ein Ergebnis von genau 0 ist nicht negativ und fährt mit der nächsten Anweisung fort. Die entgegengesetzte Verzweigung, die ebenfalls null annimmt, ist bgez.

Wird erweitert zu

blt rs, zero, label

Der Assembler ersetzt diese Pseudoanweisung durch die oben aufgeführte(n) echte(n) Anweisung(en).

Beispiel

li t0, -3
bltz t0, done   # t0 < 0, so jump to 'done'