blt
lyszt.net tratta blt e altre istruzioni RISC-V in modo più dettagliato.
Formato di codifica
Descrizione
blt confronta due valori e salta quando il primo è minore. beq e bne verificano invece l'uguaglianza. Il nome sta per branch if less than (salta se minore di). La forma seguente salta alla posizione etichettata quando rs1 è minore di rs2, e altrimenti prosegue con l'istruzione successiva.
blt rs1, rs2, label
La pagina beq spiega i salti, le etichette e come funziona un salto.
Il confronto tratta entrambi i valori come con segno, quindi possono essere negativi. -1 è minore di 0, e qualsiasi numero negativo è minore di qualsiasi numero positivo. I confronti senza segno usano un'istruzione separata, bltu, e le due discordano su qualsiasi valore il cui bit più significativo sia impostato.
I cicli di conteggio si basano su blt. La riga seguente si ripete finché il contatore t0 resta sotto il suo limite t1.
blt t0, t1, loop
Una volta che il contatore raggiunge il limite, il salto non viene preso e il ciclo termina. I controlli dei limiti usano la stessa istruzione per mantenere un valore sotto un massimo prima che il programma lo utilizzi.
Il manuale RISC-V specifica che blt e bltu prendono il salto quando rs1 è minore di rs2, confrontando rispettivamente con segno e senza segno. Osserva inoltre che bgt, bgtu, ble e bleu possono essere sintetizzati invertendo gli operandi di blt, bltu, bge e bgeu.
RISC-V non fornisce un salto se maggiore. Per verificare se a è maggiore di b, inverti il confronto e verifica se b è minore di a. L'assembler offre una scorciatoia bgt che scambia gli operandi per te.
Esempio
li t0, 2 li t1, 5 blt t0, t1, done # 2 < 5, so jump to 'done'
