seqzpseudo

seqz

pseudo
Asembler RISC-V Referencja

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

Opis

seqz sprawdza, czy rejestr zawiera zero. Nazwa oznacza "set if equal to zero" (ustaw, jeśli równe zero). Gdy rejestr źródłowy rs jest zerem, poniższa forma zapisuje 1 do rejestru docelowego rd, a 0, gdy rs zawiera jakąkolwiek inną wartość.

seqz rd, rs

Wynikiem jest 1 lub 0, odpowiadając, czy wartość jest zerem.

seqz to pseudoinstrukcja: czytelna nazwa, którą asembler przepisuje na rzeczywistą instrukcję. Wynikiem jest poniższa instrukcja, która pyta, czy wartość jest mniejsza niż 1.

sltiu rd, rs, 1

Wśród liczb bez znaku 0 jest jedyną wartością mniejszą niż 1. Piszesz seqz, a asembler wykonuje tłumaczenie.

Żadna instrukcja RISC-V nie pyta, czy dwie wartości są równe, więc seqz służy do budowania testów równości. Zastosuj XOR na obu wartościach, co daje zero, gdy są równe, a wynik niezerowy, gdy się różnią, a następnie zastosuj seqz do tego wyniku. 1 oznacza, że oryginały były równe. Strona xor wyjaśnia, dlaczego XOR wykrywa równość.

Podręcznik RISC-V definiuje seqz jako pseudoinstrukcję asemblera dla sltiu ze stałą 1, która ustawia rd na 1, jeśli rs1 równa się zero, a na 0 w przeciwnym razie.

seqz odwraca również sens wartości prawda lub fałsz. Rejestr zawierający 0 staje się 1, a każda niezerowa wartość staje się 0. Odpowiedź jest zwykłą liczbą, więc może zasilać dalszą arytmetykę, na przykład mnożenie przez nią w celu wyzerowania wartości pod warunkiem. Jej odpowiednikiem jest snez, który sprawdza, czy wartość jest niezerowa.

Rozwija się do

sltiu rd, rs, 1

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

Przykład

li t0, 0
seqz t1, t0       # t1 = 1