Laden einer Adresse in MIPS64

Dies ist wahrscheinlich eine einfache, offensichtliche Sache, die ich gerade nicht sehe, aber wie lade ich eine Adresse in einen MIPS64-Prozessor? In einem MIPS32-Prozessor der folgende Assembler-Pseudobefehl:

la $at, LabelAddr

Erweitert sich zu:

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

enn ich mir den MIPS64-Befehlssatz ansehe, sehe ich, dasslui lädt immer noch ein 16-Bit-Direktsignal in die obere Hälfte eines 32-Bit-Wortes. Es scheint keine Art von erweitertem Befehl zu geben, der ein Direktes irgendwo in den oberen Bereich eines 64-Bit-Wortes lädt. Dies scheint also das Äquivalent eines @ zu seila Pseudo-Anweisung Ich müsste in Code etwas wie erweitern:

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]

Das scheint mir ein bisschen ... verwickelt für etwas so Einfaches wie das Laden einer Adresse, so dass ich davon überzeugt bin, dass ich etwas übersehen habe.

Was habe ich übersehen (wenn überhaupt)?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage