Загрузка адреса в MIPS64
Вероятно, это простая, очевидная вещь, которую я просто не вижу, но как мне загрузить адрес в процессор MIPS64? В процессоре MIPS32 следующая псевдоинструкция ассемблера:
la $at, LabelAddr
Расширяется в:
lui $at, LabelAddr[31:16]
ori $at,$at, LabelAddr[15:0]
Глядя на набор инструкций MIPS64, я вижу, чтоlui
по-прежнему загружает 16-битный непосредственно в верхнюю половину 32-битного слова. Похоже, не существует какой-либо расширенной инструкции, которая загружает непосредственно в верхнюю область 64-битного слова. Таким образом, кажется, что сделать эквивалентla
псевдоинструкцию, которую мне нужно расширить в код, например:
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]
Это кажется мне немного ... замысловатым для чего-то столь же базового, как загрузка адреса, так что я уверен, что я что-то упустил.
Что я пропустил (если вообще что-нибудь)?