bgtzpseudo

bgtz

pseudo
Asembler RISC-V Referencja

lyszt.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'