slti
lyszt.net couvre slti et d'autres instructions RISC-V plus en détail.
Format d'encodage
Description
slti compare un registre à une constante et écrit 1 ou 0 dans la destination. C'est slt, qui compare deux registres et stocke le résultat sous forme de nombre (voir cette page), avec la seconde valeur fournie comme immédiat. Un immédiat est une constante encodée dans l'instruction, et le i dans le nom le marque.
La forme de slti est présentée ci-dessous. Lorsque la valeur dans rs1 est inférieure à la constante imm, rd reçoit 1, et 0 sinon.
slti rd, rs1, imm
La comparaison est signée, donc le registre et la constante sont tous deux lus comme des nombres pouvant être négatifs.
Utilisez-le pour comparer une variable à un seuil fixe connu à l'avance. Vérifier si un indice est inférieur à 10 ou si une valeur est tombée sous une limite prend un seul slti. La ligne suivante demande si t0 est inférieur à zéro, ce qui teste une valeur négative et met t1 à 1 pour les valeurs négatives et à 0 sinon.
slti t1, t0, 0
Le manuel RISC-V indique que slti place 1 dans rd si rs1 est inférieur à l'immédiat étendu en signe lorsque les deux sont traités comme des nombres signés, et 0 sinon. La vérification de débordement pour l'addition signée générale l'utilise, comme montré sur la page slt, pour enregistrer si un opérande est négatif.
La constante va de -2048 à 2047. Pour comparer avec une valeur plus grande, chargez la constante dans un registre avec li et utilisez slt. L'assembleur rejette une constante hors plage avec un message d'erreur.
Exemple
li t0, 3 slti t1, t0, 5 # t1 = 1 (3 < 5)
Références
- [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.
