slti
lyszt.net tratta slti e altre istruzioni RISC-V in modo più dettagliato.
Formato di codifica
Descrizione
slti confronta un registro con una costante e scrive 1 o 0 nella destinazione. È slt, che confronta due registri e memorizza il risultato come numero (vedi quella pagina), con il secondo valore fornito come immediato. Un immediato è una costante codificata nell'istruzione, e la i nel nome lo indica.
La forma di slti è mostrata di seguito. Quando il valore in rs1 è minore della costante imm, rd riceve 1, e 0 altrimenti.
slti rd, rs1, imm
Il confronto è con segno, quindi il registro e la costante sono entrambi letti come numeri che possono essere negativi.
Usalo per confrontare una variabile con una soglia fissa nota in anticipo. Verificare se un indice è inferiore a 10 o se un valore è sceso sotto un limite richiede un solo slti. La riga successiva chiede se t0 è minore di zero, il che verifica un valore negativo e imposta t1 a 1 per i valori negativi e a 0 altrimenti.
slti t1, t0, 0
Il manuale RISC-V afferma che slti inserisce 1 in rd se rs1 è minore dell'immediato esteso in segno quando entrambi sono trattati come numeri con segno, e 0 altrimenti. Il controllo di overflow per l'addizione con segno generale lo utilizza, come mostrato nella pagina slt, per registrare se un operando è negativo.
La costante va da -2048 a 2047. Per confrontare con un valore più grande, caricare la costante in un registro con li e usare slt. L'assembler rifiuta una costante fuori intervallo con un messaggio di errore.
Esempio
li t0, 3 slti t1, t0, 5 # t1 = 1 (3 < 5)
Riferimenti
- [1]RISC-V International. The RISC-V Instruction Set Manual, Volume I: Unprivileged Architecture. Version 20260120. Section 2.4.1, Integer Register-Immediate Instructions, pages 28 to 29.
- [2]RISC-V International. The RISC-V Instruction Set Manual, Volume I: Unprivileged Architecture. Version 20260120. Section 2.4, Integer Computational Instructions, page 27.
