sltiu
lyszt.net tratta sltiu e altre istruzioni RISC-V in modo più dettagliato.
Formato di codifica
Descrizione
sltiu combina slti e sltu. Confronta un registro con una costante e tratta entrambi i valori come senza segno. Il nome impila le parti: set less than, immediate, unsigned. La forma seguente scrive 1 in rd quando rs1 è inferiore alla costante imm, con entrambi letti come numeri non negativi, e 0 altrimenti.
sltiu rd, rs1, imm
Senza segno, come nella pagina sltu, significa che il bit più alto conta come una cifra ordinaria del numero, quindi l'intervallo va da 0 a circa 4 miliardi. sltiu gestisce i controlli di intervallo su valori che non possono essere negativi, come verificare se un indice è inferiore alla dimensione di un array, in una sola istruzione.
La riga seguente chiede se il valore è inferiore a 1.
sltiu rd, rs, 1
Zero è l'unico valore senza segno inferiore a 1, quindi il risultato è 1 quando rs è zero e 0 altrimenti. Questo verifica l'uguaglianza con zero, e la scorciatoia seqz è costruita su di esso. L'uguaglianza tra due valori ne consegue. Esegui lo XOR dei due valori, che dà zero solo quando coincidono, e verifica il risultato rispetto a zero.
Il manuale RISC-V afferma che la costante viene prima estesa con il segno a 32 bit e poi trattata come un numero senza segno. Una costante negativa diventa quindi un valore senza segno molto grande. Il manuale indica sltiu con la costante 1 come modo per verificare lo zero, che è la pseudo-istruzione seqz.
Come con slti, le costanti oltre l'intervallo di 12 bit vengono caricate in un registro con li e confrontate con sltu.
Esempio
li t0, -1 sltiu t1, t0, 5 # t1 = 0 (t0 read as unsigned is huge)
