beqz
pseudolyszt.net tratta beqz e altre istruzioni RISC-V in modo più dettagliato.
Descrizione
beqz salta quando un registro contiene zero. Il nome significa salta se uguale a zero. Con la forma seguente, il processore salta alla posizione etichettata quando rs è zero e altrimenti continua con l'istruzione successiva.
beqz rs, label
beqz è una pseudoistruzione, un nome leggibile che l'assembler riscrive in un'istruzione reale. Diventa l'istruzione seguente, che confronta il registro con zero, il registro speciale che contiene sempre 0.
beq rs, zero, label
beqz offre un modo più breve per scrivere il confronto più comune. Vedi beq per il funzionamento dei salti e delle etichette.
Lo zero compare spesso nel codice di basso livello, ed è per questo che esiste la forma abbreviata. Un byte zero marca la fine di un testo. Lo zero è il segnale abituale che un'operazione è riuscita. Lo zero rappresenta anche un valore vuoto o mancante, e i cicli di conto alla rovescia terminano a zero. Il test dello zero viene usato dopo il caricamento di un carattere per rilevare la fine di una stringa, su uno stato restituito per prendere il percorso di successo e su un contatore per terminare un ciclo.
Il manuale RISC-V indica una ragione per cui i suoi salti confrontano due registri invece di confrontare un registro con zero. I confronti con zero richiedono un ritardo di circuito non banale, quindi sono quasi costosi quanto i confronti di grandezza aritmetica. beqz è quindi una pseudoistruzione che usa beq con zero.
La prima riga seguente si legge più chiaramente della seconda, che esplicita il confronto con zero.
beqz t0, done beq t0, zero, done
Le pseudoistruzioni esistono per la leggibilità, e il codice macchina che producono è identico. Il suo opposto è bnez, che salta quando un valore non è zero.
Si espande in
beq rs, zero, label
L'assembler sostituisce questa pseudoistruzione con la o le istruzioni reali elencate sopra.
Esempio
li t0, 0 beqz t0, done # t0 == 0, so jump to 'done'
