sll
lyszt.net tratta sll e altre istruzioni RISC-V in modo più dettagliato.
Formato di codifica
Descrizione
sll sposta i bit di un numero verso sinistra. Un registro contiene 32 bit in fila, e uno scorrimento sposta l'intera fila verso sinistra o destra di un certo numero di posizioni. Il nome sta per shift left logical (scorrimento logico a sinistra). Nella forma seguente, il valore in rs1 viene spostato a sinistra del numero di posizioni indicato in rs2, e il risultato va in rd.
sll rd, rs1, rs2
Man mano che i bit si spostano a sinistra, degli zeri riempiono le posizioni vuote a destra, e i bit spinti oltre il bordo sinistro vengono persi.
Uno scorrimento a sinistra di una posizione raddoppia un numero, allo stesso modo in cui aggiungere uno 0 a un numero decimale lo moltiplica per dieci. Uno scorrimento di 1 moltiplica per 2, uno scorrimento di 2 moltiplica per 4, e uno scorrimento di 3 moltiplica per 8. Uno scorrimento costa al processore meno di una moltiplicazione, il che lo rende la via rapida per moltiplicare per potenze di due. L'accesso agli array si basa su questo, perché l'indirizzo di ogni elemento si trova a un numero fisso di byte, una potenza di due, dopo il precedente.
Secondo il manuale RISC-V, la quantità di scorrimento è contenuta nei 5 bit bassi del registro rs2. Cinque bit coprono da 0 a 31 posizioni, quindi i bit rimanenti di rs2 non hanno effetto. Il manuale chiama sll uno scorrimento logico a sinistra, nel senso che degli zeri entrano nei bit bassi.
In questa forma la quantità di scorrimento proviene da un registro, il che si adatta a una quantità calcolata durante l'esecuzione del programma. Usare slli per una quantità fissa. L'esempio sposta 3 a sinistra di 2 posizioni, moltiplicandolo per 4 per dare 12.
Esempio
li t0, 3 li t1, 2 sll t2, t0, t1 # t2 = 12
