Cargando una dirección en MIPS64

Esto es probablemente algo simple y obvio que simplemente no estoy viendo, pero ¿cómo puedo cargar una dirección en un procesador MIPS64? En un procesador MIPS32, la siguiente pseudoinstrucción del ensamblador:

la $at, LabelAddr

Se expande en:

lui $at, LabelAddr[31:16]
ori $at,$at, LabelAddr[15:0]

Mirando el conjunto de instrucciones MIPS64, veo quelui todavía carga un inmediato de 16 bits en la mitad superior de una palabra de 32 bits. No parece haber ningún tipo de instrucción expandida que cargue un elemento inmediato en el área superior de una palabra de 64 bits. Esto parece, entonces, que hacer el equivalente de unla pseudoinstrucción que necesitaría para expandir en código algo así como:

lui $at, LabelAddr[63:48]
ori $at, $at, LabelAddr[47:32]
sll $at, 16
ori $at, $at, LabelAddr[31:16]
sll $at, 16
ori $at, $at, LabelAddr[15:0]

Esto me parece un poco ... complicado por algo tan básico como cargar una dirección, así que me deja convencido de que he pasado por alto algo.

¿Qué es lo que he pasado por alto (si acaso)?

Respuestas a la pregunta(2)

Su respuesta a la pregunta