bge
lyszt.net obejmuje bge i inne instrukcje RISC-V w większych szczegółach.
Format kodowania
Opis
bge łączy się z blt i odwraca jego warunek. Litery oznaczają branch if greater than or equal (skok, jeśli większe lub równe). Gdy rs1 jest co najmniej równe rs2, poniższa instrukcja skacze do oznaczonej pozycji. W przeciwnym razie wykonanie kontynuowane jest od następnej instrukcji.
bge rs1, rs2, label
Dla dowolnych dwóch wartości dokładnie jedna z blt i bge wykonuje skok, więc obie obejmują wszystkie przypadki. Porównanie opisano przy blt, a skoki ogólnie przy beq.
bge często pojawia się na początku pętli jako test wyjścia. Poniższa linia opuszcza pętlę, gdy licznik t1 osiągnie swój limit t2.
bge t1, t2, done
Następnie znajduje się ciało pętli, a bezwarunkowy skok na jego końcu wraca na początek. Testowanie przed ciałem obsługuje zero powtórzeń, ponieważ ciało, którego warunek już jest spełniony, nigdy się nie wykonuje.
Część "or equal" (lub równe) decyduje o zachowaniu na granicy. bge skacze, gdy dwie wartości są równe, a błędy o jeden w pętlach zwykle wynikają z tej granicy. Pętla licząca od 0 do n kończy się, gdy licznik osiągnie n.
Zgodnie z podręcznikiem RISC-V, bge i bgeu wykonują skok, gdy rs1 jest większe lub równe rs2, porównując odpowiednio wartości ze znakiem i bez znaku. Przesunięcie skoku to wartość 12-bitowa mierzona w wielokrotnościach 2 bajtów.
Podobnie jak w przypadku blt, porównanie jest ze znakiem, więc wartości ujemne są dozwolone. bgeu to forma bez znaku, używana dla adresów i rozmiarów. Częstym zastosowaniem jest sprawdzenie, że wartość jest nieujemna, jak w poniższej linii.
bge t0, zero, ok
Przykład
bge t1, t2, done # leave the loop once i >= n
