beqz
pseudolyszt.net obejmuje beqz i inne instrukcje RISC-V w większych szczegółach.
Opis
beqz wykonuje skok, gdy rejestr zawiera zero. Nazwa oznacza branch if equal to zero (skok, jeśli równe zero). W poniższej formie procesor skacze do oznaczonej pozycji, gdy rs wynosi zero, a w przeciwnym razie przechodzi do następnej instrukcji.
beqz rs, label
beqz to pseudoinstrukcja, czytelna nazwa, którą asembler przepisuje na rzeczywistą instrukcję. Staje się ona instrukcją poniżej, która porównuje rejestr z zero, specjalnym rejestrem, który zawsze zawiera 0.
beq rs, zero, label
beqz daje krótszy sposób zapisania najczęstszego porównania. Zobacz beq, aby dowiedzieć się, jak działają rozgałęzienia i etykiety.
Zero pojawia się często w kodzie niskopoziomowym, dlatego istnieje ten skrót. Bajt zerowy oznacza koniec tekstu. Zero to zwykle sygnał, że operacja się powiodła. Zero reprezentuje również pustą lub brakującą wartość, a pętle odliczania kończą się na zerze. Test zera jest używany po wczytaniu znaku do wykrycia końca łańcucha, na zwróconym statusie do wybrania ścieżki sukcesu oraz na liczniku do zakończenia pętli.
Podręcznik RISC-V podaje jeden powód, dla którego jego rozgałęzienia porównują dwa rejestry zamiast porównywać jeden rejestr z zerem. Porównania z zerem wymagają niebanalnego opóźnienia układu, więc są prawie tak kosztowne jak porównania wielkości arytmetycznych. Dlatego beqz to pseudoinstrukcja, która używa beq z zero.
Pierwszy wiersz poniżej czyta się jaśniej niż drugi, który wyraźnie zapisuje porównanie z zerem.
beqz t0, done beq t0, zero, done
Pseudoinstrukcje istnieją dla czytelności, a kod maszynowy, który produkują, jest identyczny. Ich przeciwieństwem jest bnez, które wykonuje skok, gdy wartość nie jest zerem.
Rozwija się do
beq rs, zero, label
Asembler zastępuje tę pseudoinstrukcję rzeczywistą instrukcją lub instrukcjami wymienionymi powyżej.
Przykład
li t0, 0 beqz t0, done # t0 == 0, so jump to 'done'
