snez
pseudolyszt.net obejmuje snez i inne instrukcje RISC-V w większych szczegółach.
Opis
snez sprawdza, czy rejestr przechowuje wartość inną niż zero, czyli odwrotność seqz. Nazwa oznacza ustaw, jeśli nie jest równe zero. Gdy rs jest różne od zera, poniższa forma zapisuje 1 do rd, a gdy rs jest zerem, zapisuje 0.
snez rd, rs
snez to pseudoinstrukcja, podobnie jak seqz, a asembler rozwija ją do rzeczywistej instrukcji. Ta instrukcja sprawdza, czy zero jest mniejsze od wartości.
sltu rd, zero, rs
To zachodzi dla każdej wartości oprócz zera. Asembler wykonuje tłumaczenie, gdy piszesz snez.
Obliczenie często daje wartość, której jedyną użyteczną właściwością jest to, czy jest zerem, na przykład liczba pozostałych elementów, różnica między dwiema rzeczami lub grupa flag. snez redukuje tę wartość do 1, gdy jest różna od zera, i do 0, gdy jest zerem, standardowa forma funkcji zwracającej odpowiedź tak lub nie.
Podręcznik RISC-V definiuje snez jako pseudoinstrukcję asemblera dla sltu z x0 jako pierwszym źródłem. Ustawia rd na 1, jeśli rs2 nie jest równe zero, a w przeciwnym razie na 0.
snez współpracuje z XOR przy testowaniu nierówności. Zastosuj XOR do dwóch wartości, co daje wynik różny od zera tylko wtedy, gdy się różnią, a następnie zastosuj snez, aby uzyskać 1, gdy są różne. Wraz z seqz daje to wynik prawda lub fałsz dla równości i nierówności, który możesz łączyć z and i or w większe warunki bez skoku.
Rozwija się do
sltu rd, zero, rs
Asembler zastępuje tę pseudoinstrukcję rzeczywistą instrukcją lub instrukcjami wymienionymi powyżej.
Przykład
li t0, 5 snez t1, t0 # t1 = 1
