bltz
pseudolyszt.net cubre bltz y otras instrucciones RISC-V con más detalle.
Descripción
bltz se ramifica cuando un registro contiene un número negativo. El nombre significa branch if less than zero (ramificar si es menor que cero). La forma siguiente salta a la posición etiquetada si rs es menor que cero, y continúa con la siguiente instrucción en caso contrario.
bltz rs, label
El ensamblador reescribe esta pseudoinstrucción como una instrucción real. Se convierte en la instrucción siguiente, que compara el registro con zero, el registro que siempre contiene 0.
blt rs, zero, label
La comparación es con signo, por lo que los 32 bits del registro se leen como un número que puede ser negativo. Una ramificación compara dos registros y no puede tomar una constante escrita en la instrucción, por lo que el 0 proviene del registro zero. Consulta blt para ramificaciones que comparan dos valores y beq para saber cómo funcionan las etiquetas.
Para comprobar si un valor es menor que cero, coloca el valor en un registro y usa bltz sobre él. Los casos habituales son comprobar el resultado de una resta para ver si quedó por debajo de cero, y comprobar el resultado de una función que informa de un error como número negativo.
sub t0, t1, t2 bltz t0, smaller
Las líneas anteriores saltan a smaller cuando el resultado de la resta es menor que cero. Un resultado de exactamente 0 no es negativo y continúa con la siguiente instrucción. La ramificación opuesta, que también toma cero, es bgez.
Se expande a
blt rs, zero, label
El ensamblador reemplaza esta pseudoinstrucción con la instrucción o instrucciones reales enumeradas arriba.
Ejemplo
li t0, -3 bltz t0, done # t0 < 0, so jump to 'done'
