lui
lyszt.net tratta lui e altre istruzioni RISC-V in modo più dettagliato.
Formato di codifica
Descrizione
lui assembla costanti grandi. Un'istruzione RISC-V occupa 32 bit, e quei bit trasportano l'operazione, i suoi registri e qualsiasi costante. Un'istruzione normale può contenere circa 12 bit di costante, il che copre i numeri piccoli ma non basta per un valore completo a 32 bit. Diverse istruzioni forniscono i pezzi di una costante grande.
lui (load upper immediate) fornisce il pezzo superiore. Prende una costante a 20 bit e la scrive nei 20 bit superiori del registro di destinazione, lasciando i 12 bit inferiori a zero. La forma appare di seguito.
lui rd, value
Una costante completa richiede due istruzioni. lui imposta i 20 bit superiori, e addi aggiunge i 12 inferiori. La pseudoistruzione li svolge questo lavoro per te, quindi un lui scritto a mano è raramente necessario per i numeri ordinari.
Il manuale RISC-V afferma che la sintassi assembly di lui e auipc omette i 12 bit inferiori della costante, perché quei bit sono sempre zero. Afferma inoltre che un lui seguito da jalr può raggiungere qualsiasi indirizzo assoluto a 32 bit: lui carica i 20 bit superiori dell'indirizzo di destinazione e jalr aggiunge i bit inferiori.
lui appare direttamente quando si caricano indirizzi tondi i cui bit inferiori sono zero, come gli indirizzi fissi dei dispositivi hardware, dove un singolo lui fornisce l'intero valore. Il suo stretto parente è auipc, che costruisce un indirizzo relativo alla posizione corrente.
Esempio
lui t0, 0x10 # t0 = 0x10000 (0x10 << 12)
