blepseudo

ble

pseudo
Asembler RISC-V Referencja

lyszt.net obejmuje ble i inne instrukcje RISC-V w większych szczegółach.

Opis

Gałęzie ble występują, gdy jedna wartość jest mniejsza lub równa innej. Nazwa oznacza branch if less than or equal (skok, jeśli mniejsze lub równe). Poniższa forma skacze do etykiety, gdy rs1 jest co najwyżej równe rs2, używając porównania ze znakiem.

ble rs1, rs2, label

ble to pseudoinstrukcja, która opiera się na zamianie operandów, podobnie jak bgt. Pytanie, czy a jest mniejsze lub równe b, jest równoważne pytaniu, czy b jest większe lub równe a, więc asembler przepisuje ble jako bge z odwróconymi operandami. Nie jest potrzebna żadna dedykowana instrukcja maszynowa. Zobacz bge, aby poznać bazowy skok.

ble nadaje się do pętli i zakresów, które obejmują swój punkt końcowy. Pętla, która wykonuje się, dopóki licznik jest co najwyżej równy n, z n włącznie, czyta się czytelnie z ble. Ta sama pętla ze ścisłym blt wymaga n plus jeden. Sprawdzanie zakresów używa jej razem z pozostałymi skokami. Skocz, jeśli wartość jest poniżej minimum, skocz, jeśli jest powyżej maksimum, a to, co pozostanie, przeszło pomyślnie.

Podręcznik RISC-V stwierdza, że bgt, bgtu, ble i bleu można syntetyzować, odwracając operandy na blt, bltu, bge i bgeu.

Równe wartości jednak powodują skok z ble, co czyni ją przeciwieństwem bgt przy tych samych operandach. Dla dowolnej pary jedna z nich powoduje skok. Porównanie jest ze znakiem, więc wartości mogą być ujemne. blt, bge, bgt i ble razem dają wszystkie cztery kierunki uporządkowania ze znakiem.

Rozwija się do

bge rs2, rs1, label

Asembler zastępuje tę pseudoinstrukcję rzeczywistą instrukcją lub instrukcjami wymienionymi powyżej.

Przykład

li t0, 2
li t1, 5
ble t0, t1, done   # 2 <= 5, so jump to 'done'