seqz
pseudolyszt.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
