ble
pseudolyszt.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'
