slt
lyszt.net cubre slt y otras instrucciones RISC-V con más detalle.
Formato de codificación
Descripción
slt compara dos números y almacena el resultado como 1 o 0. El nombre significa set less than (establecer si es menor que). La forma siguiente comprueba si rs1 es menor que rs2. Si la comprobación tiene éxito, la instrucción escribe 1 en el registro destino rd. Si falla, escribe 0.
slt rd, rs1, rs2
Una comparación se puede usar de dos maneras. Una instrucción de salto condicional salta en función de ella. Alternativamente, la respuesta sí o no se puede almacenar como un número, 1 para verdadero y 0 para falso, y usarse más tarde. slt realiza el almacenamiento. El ensamblador representa verdadero y falso con el 1 o 0 almacenado, y ese valor se puede sumar, enmascarar o combinar como cualquier otro número.
La comparación trata los valores como con signo, por lo que pueden ser negativos, y -1 cuenta como menor que 0. La instrucción relacionada sltu los trata como sin signo, lo que cambia la respuesta para valores grandes y para valores que parecen negativos.
El manual de RISC-V describe slt y sltu como las comparaciones con signo y sin signo que escriben 1 en rd si rs1 es menor que rs2 y 0 en caso contrario. También usa slt en una comprobación de desbordamiento para la suma con signo general. Después de la suma, la segunda línea siguiente registra si el segundo operando es negativo, la tercera línea registra si la suma es menor que el primer operando, y la última línea salta cuando las dos respuestas difieren.
add t0, t1, t2 slti t3, t2, 0 slt t4, t0, t1 bne t3, t4, overflow
El razonamiento es que la suma debería ser menor que un operando solo cuando el otro operando es negativo.
No existe una instrucción set greater than. Para comprobar si a es mayor que b, intercambia los operandos y pregunta si b es menor que a. El ejemplo compara 3 y 9. Como 3 es menor que 9, t2 se establece en 1.
Ejemplo
li t0, 3 li t1, 9 slt t2, t0, t1 # t2 = 1
Referencias
- [1]RISC-V International. The RISC-V Instruction Set Manual, Volume I: Unprivileged Architecture. Version 20260120. Section 2.4.2, Integer Register-Register Instructions, page 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.
