ble
pseudolyszt.net cubre ble y otras instrucciones RISC-V con más detalle.
Descripción
Las ramas ble se producen cuando un valor es menor o igual que otro. El nombre significa branch if less than or equal (bifurcar si es menor o igual). La forma siguiente salta a la etiqueta cuando rs1 es como máximo rs2, usando una comparación con signo.
ble rs1, rs2, label
ble es una pseudoinstrucción que se basa en intercambiar los operandos, como hace bgt. Preguntar si a es menor o igual que b equivale a preguntar si b es mayor o igual que a, así que el ensamblador reescribe ble como bge con los operandos invertidos. No se necesita ninguna instrucción de máquina dedicada. Consulta bge para la bifurcación subyacente.
ble es adecuada para bucles y rangos que incluyen su punto final. Un bucle que se ejecuta mientras un contador es como máximo n, con n incluido, se lee con claridad usando ble. El mismo bucle con la estricta blt necesita n más uno. Las comprobaciones de rango la usan junto con las demás bifurcaciones. Bifurca si un valor está por debajo del mínimo, bifurca si está por encima del máximo, y lo que queda ha pasado.
El manual de RISC-V afirma que bgt, bgtu, ble y bleu pueden sintetizarse invirtiendo los operandos a blt, bltu, bge y bgeu.
Los valores iguales sí bifurcan con ble, lo que la convierte en lo opuesto de bgt con los mismos operandos. Para cualquier par, una de ellas bifurca. La comparación es con signo, por lo que los valores pueden ser negativos. blt, bge, bgt y ble juntas dan las cuatro direcciones de orden con signo.
Se expande a
bge rs2, rs1, label
El ensamblador reemplaza esta pseudoinstrucción con la instrucción o instrucciones reales enumeradas arriba.
Ejemplo
li t0, 2 li t1, 5 ble t0, t1, done # 2 <= 5, so jump to 'done'
