blezpseudo

blez

pseudo
Asembler RISC-V Referencja

lyszt.net obejmuje blez i inne instrukcje RISC-V w większych szczegółach.

Opis

blez wykonuje skok warunkowy, gdy wartość w rejestrze jest zerem lub liczbą ujemną. Nazwa oznacza branch if less than or equal to zero (skok, jeśli mniejsze lub równe zero). Poniższa postać skacze do oznaczonej pozycji, gdy rs jest co najwyżej zerem, a w przeciwnym razie przechodzi do następnej instrukcji.

blez rs, label

Asembler traktuje ją jako pseudoinstrukcję i przepisuje ją na poniższą instrukcję, która pyta, czy zero jest większe lub równe rejestrowi.

bge zero, rs, label

Argumenty są zamienione, ponieważ RISC-V nie ma skoku warunkowego mniejsze-lub-równe, więc bge wykonuje tę pracę, tak samo jak zbudowane jest ble. Porównanie jest ze znakiem. Skok przy zerze, co odróżnia blez od bltz, i jest przeciwieństwem bgtz, więc dla dowolnej wartości dokładnie jeden z tych dwóch wykonuje skok. Podstawowy skok warunkowy opisano w bge.

blez pasuje do sprawdzenia, że nie zostało nic do zrobienia. Pętla przetwarzająca liczbę pozostałych elementów może zakończyć się, gdy tylko licznik osiągnie zero lub spadnie poniżej zera.

blez t0, done

Powyższa linia skacze do done, gdy t0 wynosi 0 lub jest ujemne.

Rozwija się do

bge zero, rs, label

Asembler zastępuje tę pseudoinstrukcję rzeczywistą instrukcją lub instrukcjami wymienionymi powyżej.

Przykład

li t0, 0
blez t0, done   # t0 <= 0, so jump to 'done'