slti
lyszt.net cubre slti y otras instrucciones RISC-V con más detalle.
Formato de codificación
Descripción
slti compara un registro con una constante y escribe 1 o 0 en el destino. Es slt, que compara dos registros y almacena el resultado como un número (véase esa página), con el segundo valor proporcionado como un inmediato. Un inmediato es una constante codificada en la instrucción, y la i del nombre lo indica.
La forma de slti se muestra a continuación. Cuando el valor en rs1 es menor que la constante imm, rd recibe 1, y 0 en caso contrario.
slti rd, rs1, imm
La comparación es con signo, por lo que tanto el registro como la constante se leen como números que pueden ser negativos.
Úsala para comparar una variable con un umbral fijo conocido de antemano. Comprobar si un índice es menor que 10 o si un valor ha caído por debajo de un límite requiere un solo slti. La siguiente línea pregunta si t0 es menor que cero, lo que comprueba si hay un valor negativo y establece t1 a 1 para valores negativos y a 0 en caso contrario.
slti t1, t0, 0
El manual de RISC-V dice que slti coloca 1 en rd si rs1 es menor que el inmediato extendido con signo cuando ambos se tratan como números con signo, y 0 en caso contrario. La comprobación de desbordamiento para la suma con signo general la utiliza, como se muestra en la página de slt, para registrar si un operando es negativo.
La constante va de -2048 a 2047. Para comparar con un valor mayor, carga la constante en un registro con li y usa slt. El ensamblador rechaza una constante fuera de rango con un mensaje de error.
Ejemplo
li t0, 3 slti t1, t0, 5 # t1 = 1 (3 < 5)
Referencias
- [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.
