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)?