snez
pseudolyszt.net tratta snez e altre istruzioni RISC-V in modo più dettagliato.
Descrizione
snez verifica se un registro contiene un valore diverso da zero, l'inverso di seqz. Il nome significa set if not equal to zero (imposta se diverso da zero). Quando rs è diverso da zero, la forma seguente scrive 1 in rd, e quando rs è zero scrive 0.
snez rd, rs
snez è una pseudoistruzione, come seqz, e l'assembler la espande in una vera istruzione. Quella istruzione chiede se zero è minore del valore.
sltu rd, zero, rs
Questo vale per qualsiasi valore tranne zero. L'assembler esegue la traduzione quando si scrive snez.
Un calcolo produce spesso un valore la cui unica proprietà utile è se sia zero, come un conteggio di elementi rimanenti, la differenza tra due cose o un gruppo di flag. snez riduce quel valore a 1 quando è diverso da zero e a 0 quando è zero, la forma standard per una funzione che restituisce una risposta sì o no.
Il manuale RISC-V definisce snez come una pseudoistruzione dell'assembler per sltu con x0 come prima sorgente. Imposta rd a 1 se rs2 è diverso da zero e a 0 altrimenti.
snez funziona con XOR per verificare la disuguaglianza. Applicare XOR ai due valori, che produce un risultato diverso da zero solo quando differiscono, quindi applicare snez per ottenere 1 quando sono diversi. Insieme a seqz, questo produce un risultato vero o falso per uguale e per diverso, che si può combinare con and e or in condizioni più grandi senza un salto.
Si espande in
sltu rd, zero, rs
L'assembler sostituisce questa pseudoistruzione con la o le istruzioni reali elencate sopra.
Esempio
li t0, 5 snez t1, t0 # t1 = 1
