bltz
pseudolyszt.net obejmuje bltz i inne instrukcje RISC-V w większych szczegółach.
Opis
bltz wykonuje rozgałęzienie, gdy rejestr zawiera liczbę ujemną. Nazwa oznacza branch if less than zero (rozgałęzienie, jeśli mniejsze od zera). Poniższa forma skacze do oznaczonej pozycji, jeśli rs jest mniejsze od zera, a w przeciwnym razie przechodzi do następnej instrukcji.
bltz rs, label
Asembler przepisuje tę pseudoinstrukcję na rzeczywistą instrukcję. Staje się ona poniższą instrukcją, która porównuje rejestr z zero, rejestrem, który zawsze zawiera 0.
blt rs, zero, label
Porównanie jest ze znakiem, więc 32 bity w rejestrze są odczytywane jako liczba, która może być ujemna. Rozgałęzienie porównuje dwa rejestry i nie może przyjąć stałej zapisanej w instrukcji, dlatego 0 pochodzi z rejestru zero. Zobacz blt dla rozgałęzień porównujących dwie wartości oraz beq, aby dowiedzieć się, jak działają etykiety.
Aby sprawdzić, czy wartość jest mniejsza od zera, umieść wartość w rejestrze i użyj na niej bltz. Typowe przypadki to testowanie wyniku odejmowania, czy spadł poniżej zera, oraz testowanie wyniku funkcji, która zgłasza błąd jako liczbę ujemną.
sub t0, t1, t2 bltz t0, smaller
Powyższe wiersze skaczą do smaller, gdy wynik odejmowania jest mniejszy od zera. Wynik dokładnie 0 nie jest ujemny i przechodzi do następnej instrukcji. Przeciwne rozgałęzienie, które również przyjmuje zero, to bgez.
Rozwija się do
blt rs, zero, label
Asembler zastępuje tę pseudoinstrukcję rzeczywistą instrukcją lub instrukcjami wymienionymi powyżej.
Przykład
li t0, -3 bltz t0, done # t0 < 0, so jump to 'done'
