blez
pseudolyszt.net aborda blez e outras instruções RISC-V com mais detalhes.
Descrição
blez desvia quando o valor em um registrador é zero ou negativo. O nome significa desviar se menor ou igual a zero. A forma abaixo salta para a posição rotulada quando rs é no máximo zero, e caso contrário segue para a próxima instrução.
blez rs, label
O montador a trata como uma pseudo-instrução e a reescreve para a instrução abaixo, que pergunta se zero é maior ou igual ao registrador.
bge zero, rs, label
Os operandos são trocados porque o RISC-V não tem desvio de menor ou igual, então bge faz o trabalho, da mesma forma que ble é construído. A comparação é com sinal. Zero desvia, o que separa blez de bltz, e é o oposto de bgtz, então para qualquer valor exatamente um dos dois realiza o desvio. Veja bge para o desvio subjacente.
blez serve para uma verificação de que não resta nada a fazer. Um laço que processa uma contagem de itens restantes pode sair assim que a contagem for zero ou tiver ficado abaixo dela.
blez t0, done
A linha acima salta para done quando t0 é 0 ou negativo.
Expande para
bge zero, rs, label
O montador substitui esta pseudoinstrução pela instrução ou instruções reais listadas acima.
Exemplo
li t0, 0 blez t0, done # t0 <= 0, so jump to 'done'
