blezpseudo

blez

pseudo
Ensamblador RISC-V Referencia

lyszt.net cubre blez y otras instrucciones RISC-V con más detalle.

Descripción

blez toma una rama cuando el valor de un registro es cero o negativo. El nombre significa branch if less than or equal to zero (bifurcar si es menor o igual que cero). La forma siguiente salta a la posición etiquetada cuando rs es como máximo cero, y en caso contrario continúa con la siguiente instrucción.

blez rs, label

El ensamblador la trata como una pseudoinstrucción y la reescribe a la instrucción siguiente, que pregunta si zero es mayor o igual que el registro.

bge zero, rs, label

Los operandos se intercambian porque RISC-V no tiene una bifurcación de menor o igual, así que bge hace el trabajo, de la misma manera en que se construye ble. La comparación es con signo. Bifurca con cero, lo que separa a blez de bltz, y es lo opuesto a bgtz, así que para cualquier valor exactamente una de las dos toma la bifurcación. Véase bge para la bifurcación subyacente.

blez encaja en una comprobación de que no queda nada por hacer. Un bucle que procesa un recuento de elementos restantes puede salir en cuanto el recuento es cero o ha quedado por debajo de él.

blez t0, done

La línea anterior salta a done cuando t0 es 0 o negativo.

Se expande a

bge zero, rs, label

El ensamblador reemplaza esta pseudoinstrucción con la instrucción o instrucciones reales enumeradas arriba.

Ejemplo

li t0, 0
blez t0, done   # t0 <= 0, so jump to 'done'