ble
Pseudoelementlyszt.net behandelt ble und andere RISC-V-Befehle ausführlicher.
Beschreibung
ble verzweigt, wenn ein Wert kleiner oder gleich einem anderen ist. Der Name steht für „branch if less than or equal“ (verzweige, wenn kleiner oder gleich). Die folgende Form springt zur Marke, wenn rs1 höchstens rs2 ist, unter Verwendung eines vorzeichenbehafteten Vergleichs.
ble rs1, rs2, label
ble ist eine Pseudoinstruktion, die auf dem Vertauschen der Operanden beruht, wie es bgt tut. Die Frage, ob a kleiner oder gleich b ist, entspricht der Frage, ob b größer oder gleich a ist, daher schreibt der Assembler ble als bge mit vertauschten Operanden um. Es ist keine eigene Maschineninstruktion nötig. Siehe bge für die zugrunde liegende Verzweigung.
ble eignet sich für Schleifen und Bereiche, die ihren Endpunkt einschließen. Eine Schleife, die läuft, solange ein Zähler höchstens n ist, wobei n eingeschlossen ist, liest sich mit ble klar. Dieselbe Schleife mit dem strikten blt benötigt n plus eins. Bereichsprüfungen verwenden es zusammen mit den anderen Verzweigungen. Verzweige weg, wenn ein Wert unter dem Minimum liegt, verzweige weg, wenn er über dem Maximum liegt, und was übrig bleibt, hat bestanden.
Das RISC-V-Handbuch gibt an, dass bgt, bgtu, ble und bleu durch Umkehren der Operanden zu blt, bltu, bge und bgeu synthetisiert werden können.
Gleiche Werte verzweigen mit ble, was es zum Gegenteil von bgt bei denselben Operanden macht. Für jedes Paar verzweigt eines von beiden. Der Vergleich ist vorzeichenbehaftet, daher können Werte negativ sein. blt, bge, bgt und ble ergeben zusammen alle vier vorzeichenbehafteten Ordnungsrichtungen.
Wird erweitert zu
bge rs2, rs1, label
Der Assembler ersetzt diese Pseudoanweisung durch die oben aufgeführte(n) echte(n) Anweisung(en).
Beispiel
li t0, 2 li t1, 5 ble t0, t1, done # 2 <= 5, so jump to 'done'
