lui
lyszt.net cubre lui y otras instrucciones RISC-V con más detalle.
Formato de codificación
Descripción
lui ensambla constantes grandes. Una instrucción RISC-V ocupa 32 bits, y esos bits contienen la operación, sus registros y cualquier constante. Una instrucción normal puede contener aproximadamente 12 bits de constante, lo que cubre números pequeños pero no alcanza para un valor completo de 32 bits. Varias instrucciones proporcionan las piezas de una constante grande.
lui (load upper immediate) proporciona la pieza superior. Toma una constante de 20 bits y la escribe en los 20 bits superiores del registro de destino, dejando los 12 bits inferiores en cero. La forma aparece a continuación.
lui rd, value
Una constante completa necesita dos instrucciones. lui establece los 20 bits superiores, y addi suma los 12 inferiores. La pseudoinstrucción li realiza este trabajo por ti, por lo que rara vez se necesita lui escrito a mano para números ordinarios.
El manual de RISC-V indica que la sintaxis de ensamblador de lui y auipc omite los 12 bits inferiores de la constante, porque esos bits siempre son cero. También indica que un lui seguido de jalr puede alcanzar cualquier dirección absoluta de 32 bits: lui carga los 20 bits superiores de la dirección de destino y jalr suma los bits inferiores.
lui aparece directamente al cargar direcciones redondas cuyos bits inferiores son cero, como las direcciones fijas de dispositivos de hardware, donde un solo lui proporciona el valor completo. Su pariente cercano es auipc, que construye una dirección relativa a la ubicación actual.
Ejemplo
lui t0, 0x10 # t0 = 0x10000 (0x10 << 12)
