bgtz
pseudolyszt.net cubre bgtz y otras instrucciones RISC-V con más detalle.
Descripción
bgtz toma una rama cuando el valor en un registro es positivo. El nombre significa branch if greater than zero (bifurcar si es mayor que cero). La forma a continuación salta a la posición etiquetada cuando rs es mayor que cero, y en caso contrario continúa con la siguiente instrucción.
bgtz rs, label
El ensamblador la trata como una pseudoinstrucción y la reescribe a la instrucción de abajo, que pregunta si zero es menor que el registro.
blt zero, rs, label
RISC-V no tiene una rama para mayor que, así que los operandos se intercambian y la rama menor que hace el trabajo, de la misma manera en que se construye bgt. La comparación es con signo. Cero no bifurca, lo que separa a bgtz de bgez. Consulta blt para la rama subyacente.
bgtz encaja en un bucle que debe continuar mientras quede algo por procesar, como un recuento de elementos restantes que sea mayor que cero. También comprueba si un resultado es mayor que cero.
bgtz a0, found
La línea anterior salta a found cuando a0 contiene 1 o más. Un valor de 0 o cualquier número negativo continúa con la siguiente instrucción.
Se expande a
blt zero, rs, label
El ensamblador reemplaza esta pseudoinstrucción con la instrucción o instrucciones reales enumeradas arriba.
Ejemplo
li t0, 4 bgtz t0, done # t0 > 0, so jump to 'done'
