Загрузка адреса в MIPS64

Вероятно, это простая и очевидная вещь, которую я просто не вижу, но как мне загрузить адрес в процессор MIPS64? В процессоре MIPS32 следующая псевдо-инструкция ассемблера:

la $at, LabelAddr

расширяется до:

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

Глядя на набор инструкций MIPS64, я вижу, что lui по-прежнему загружает 16-битные данные непосредственно в верхнюю половину 32-битное слово. Нет t выглядит как любая расширенная инструкция, которая немедленно загружает в верхнюю часть 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]

Это кажется мне немного ... запутанным для чего-то столь же простого. при загрузке адреса, чтобы я был убежден, что я что-то упустил.

Что я упустил (если что-нибудь)?

7
задан JUST MY correct OPINION 12 October 2010 в 11:38
поделиться