blepseudo

ble

pseudo
Assembly RISC-V Riferimento

lyszt.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'