blezpseudo

blez

pseudo
Assembly RISC-V Referência

lyszt.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'