bgezpseudo

bgez

pseudo
Assembly RISC-V Riferimento

lyszt.net tratta bgez e altre istruzioni RISC-V in modo più dettagliato.

Descrizione

bgez esegue un salto quando il valore in un registro è zero o positivo. Il nome significa branch if greater than or equal to zero. La forma seguente salta alla posizione etichettata quando rs è almeno zero, e altrimenti passa all'istruzione successiva.

bgez rs, label

L'assembler la tratta come una pseudo-istruzione e la riscrive nell'istruzione seguente, che confronta il registro con zero, il registro che contiene sempre 0.

bge rs, zero, label

Il confronto è con segno, quindi i 32 bit nel registro vengono letti come un numero che può essere negativo. Zero conta come corrispondenza, il che distingue bgez da bgtz. È l'opposto di bltz, quindi per qualsiasi valore esattamente uno dei due esegue il salto. Vedi bge per il confronto di due registri.

bgez è il test naturale per un valore che non deve essere negativo, come una lunghezza, un conteggio o un indice. Un programma che sottrae uno da un contatore e continua a iterare finché il contatore non è sceso sotto zero lo usa alla fine del ciclo.

addi t0, t0, -1
bgez t0, loop

Il ciclo sopra si ripete finché t0 è 0 o più dopo la sottrazione, quindi viene eseguito ancora una volta con t0 uguale a 0 e si ferma quando t0 raggiunge -1.

Si espande in

bge rs, zero, label

L'assembler sostituisce questa pseudoistruzione con la o le istruzioni reali elencate sopra.

Esempio

li t0, 4
bgez t0, done   # t0 >= 0, so jump to 'done'