ble
pseudolyszt.net tratta ble e altre istruzioni RISC-V in modo più dettagliato.
Descrizione
ble esegue un salto quando un valore è minore o uguale a un altro. Il nome sta per «branch if less than or equal» (salta se minore o uguale). La forma seguente salta all'etichetta quando rs1 è al massimo rs2, usando un confronto con segno.
ble rs1, rs2, label
ble è una pseudoistruzione che si basa sullo scambio degli operandi, come fa bgt. Chiedere se a è minore o uguale a b equivale a chiedere se b è maggiore o uguale ad a, quindi l'assembler riscrive ble come bge con gli operandi invertiti. Non è necessaria alcuna istruzione macchina dedicata. Vedi bge per il salto sottostante.
ble è adatta a cicli e intervalli che includono il loro estremo. Un ciclo che viene eseguito finché un contatore è al massimo n, con n incluso, si legge chiaramente con ble. Lo stesso ciclo con il rigoroso blt richiede n più uno. I controlli di intervallo la usano insieme agli altri salti. Salta altrove se un valore è sotto il minimo, salta altrove se è sopra il massimo, e ciò che rimane ha superato.
Il manuale RISC-V afferma che bgt, bgtu, ble e bleu possono essere sintetizzate invertendo gli operandi in blt, bltu, bge e bgeu.
Valori uguali saltano con ble, il che lo rende l'opposto di bgt sugli stessi operandi. Per qualsiasi coppia, uno dei due salta. Il confronto è con segno, quindi i valori possono essere negativi. blt, bge, bgt e ble insieme forniscono tutte e quattro le direzioni di ordinamento con segno.
Si espande in
bge rs2, rs1, label
L'assembler sostituisce questa pseudoistruzione con la o le istruzioni reali elencate sopra.
Esempio
li t0, 2 li t1, 5 ble t0, t1, done # 2 <= 5, so jump to 'done'
