slli
lyszt.net tratta slli e altre istruzioni RISC-V in modo più dettagliato.
Formato di codifica
Descrizione
slli sposta i bit a sinistra di una quantità fissa. L'operazione corrisponde a sll: i bit scorrono a sinistra, gli zeri riempiono il lato destro, i bit che superano il bordo sinistro vanno persi, e ogni posizione spostata raddoppia il valore (la pagina sll copre il meccanismo). L'istruzione contiene la distanza di scorrimento come costante, quindi nessun registro la fornisce. La i significa immediato, che è il termine per una costante scritta nell'istruzione.
La forma di slli appare di seguito, dove amount è un numero fisso da 0 a 31.
slli rd, rs1, amount
La riga successiva sposta t0 a sinistra di 3 posizioni, il che lo moltiplica per 8.
slli t1, t0, 3
Gli array rendono questa istruzione comune. Un valore a 32 bit in un array occupa 4 byte, quindi l'elemento numero i si trova a i volte 4 byte dall'inizio, e uno scorrimento a sinistra di 2 moltiplica per 4. Lo schema usuale sposta l'indice per produrre un offset in byte, aggiunge l'indirizzo iniziale dell'array, poi carica il valore. Riconoscere questa sequenza di scorrimento, addizione e caricamento aiuta quando si legge assembly scritto da altri.
Il manuale RISC-V codifica gli scorrimenti di una costante come una specializzazione del formato di tipo I, uno dei layout di istruzione standard. rs1 contiene l'operando da spostare, e i 5 bit inferiori del campo immediato contengono la quantità di scorrimento. slli esegue uno scorrimento logico a sinistra, e gli zeri entrano nei bit inferiori.
Usa slli quando la distanza di scorrimento è nota mentre scrivi il codice. Usa sll quando la quantità viene calcolata durante l'esecuzione del programma. L'esempio sposta 5 a sinistra di 3, il che dà 5 volte 8, ovvero 40.
Esempio
li t0, 5 slli t1, t0, 3 # t1 = 5 << 3 = 40 (5 * 8)
