bgez
pseudolyszt.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'
