bltz
pseudolyszt.net aborda bltz e outras instruções RISC-V com mais detalhes.
Descrição
bltz desvia quando um registrador contém um número negativo. O nome significa desviar se menor que zero. A forma abaixo salta para a posição rotulada se rs for menor que zero, e continua para a próxima instrução caso contrário.
bltz rs, label
O montador reescreve esta pseudo-instrução como uma instrução real. Ela se torna a instrução abaixo, que compara o registrador com zero, o registrador que sempre contém 0.
blt rs, zero, label
A comparação é com sinal, então os 32 bits no registrador são lidos como um número que pode ser negativo. Um desvio compara dois registradores e não pode receber uma constante escrita na instrução, e é por isso que o 0 vem do registrador zero. Veja blt para desvios que comparam dois valores e beq para saber como os rótulos funcionam.
Para verificar se um valor é menor que zero, coloque o valor em um registrador e use bltz nele. Os casos usuais são testar o resultado de uma subtração para ver se ficou abaixo de zero, e testar o resultado de uma função que reporta um erro como número negativo.
sub t0, t1, t2 bltz t0, smaller
As linhas acima saltam para smaller quando o resultado da subtração é menor que zero. Um resultado exatamente 0 não é negativo e continua para a próxima instrução. O desvio oposto, que também recebe zero, é bgez.
Expande para
blt rs, zero, label
O montador substitui esta pseudoinstrução pela instrução ou instruções reais listadas acima.
Exemplo
li t0, -3 bltz t0, done # t0 < 0, so jump to 'done'
