bgtz
pseudolyszt.net obejmuje bgtz i inne instrukcje RISC-V w większych szczegółach.
Opis
bgtz wykonuje skok warunkowy, gdy wartość w rejestrze jest dodatnia. Nazwa oznacza branch if greater than zero (skok, jeśli większe od zera). Poniższa forma skacze do oznaczonej pozycji, gdy rs jest większe od zera, a w przeciwnym razie przechodzi do następnej instrukcji.
bgtz rs, label
Asembler traktuje ją jako pseudoinstrukcję i przepisuje ją na poniższą instrukcję, która sprawdza, czy zero jest mniejsze od rejestru.
blt zero, rs, label
RISC-V nie ma skoku dla większego od, więc operandy są zamieniane i skok mniejszy od wykonuje pracę, w taki sam sposób, w jaki zbudowany jest bgt. Porównanie jest ze znakiem. Zero nie powoduje skoku, co odróżnia bgtz od bgez. Zobacz blt, aby poznać bazowy skok.
bgtz pasuje do pętli, która powinna być kontynuowana, dopóki coś pozostaje do przetworzenia, na przykład liczba pozostałych elementów większa od zera. Sprawdza również, czy wynik jest większy od zera.
bgtz a0, found
Powyższa linia skacze do found, gdy a0 zawiera 1 lub więcej. Wartość 0 lub dowolna liczba ujemna przechodzi do następnej instrukcji.
Rozwija się do
blt zero, rs, label
Asembler zastępuje tę pseudoinstrukcję rzeczywistą instrukcją lub instrukcjami wymienionymi powyżej.
Przykład
li t0, 4 bgtz t0, done # t0 > 0, so jump to 'done'
