bgtzpseudo

bgtz

pseudo
Assembly RISC-V Referência

lyszt.net aborda bgtz e outras instruções RISC-V com mais detalhes.

Descrição

bgtz faz um desvio quando o valor em um registrador é positivo. O nome significa branch if greater than zero (desviar se maior que zero). A forma abaixo salta para a posição rotulada quando rs é maior que zero e, caso contrário, segue para a próxima instrução.

bgtz rs, label

O montador a trata como uma pseudoinstrução e a reescreve para a instrução abaixo, que pergunta se zero é menor que o registrador.

blt zero, rs, label

O RISC-V não tem desvio para maior que, então os operandos são trocados e o desvio de menor que faz o trabalho, da mesma forma que bgt é construído. A comparação é com sinal. Zero não desvia, o que separa bgtz de bgez. Veja blt para o desvio subjacente.

bgtz serve para um laço que deve continuar enquanto houver algo a processar, como uma contagem de itens restantes maior que zero. Ele também testa se um resultado é maior que zero.

bgtz a0, found

A linha acima salta para found quando a0 contém 1 ou mais. Um valor de 0 ou qualquer número negativo segue para a próxima instrução.

Expande para

blt zero, rs, label

O montador substitui esta pseudoinstrução pela instrução ou instruções reais listadas acima.

Exemplo

li t0, 4
bgtz t0, done   # t0 > 0, so jump to 'done'