我的教科书说MIPS汇编程序必须将大常量分成几部分,然后将它们重新组合成一个寄存器。并且它使用$ at作为
的临时注册我一直在寻找一个具体的例子,有人有吗?
我已经看到一些网站说la
伪指令使用$at
转换为指令,但似乎并不需要。例如:
la $t0, 0xABCD1234
转换为
lui $t0, 0xABCD
ori $t0, $t0, 0x1234
答案 0 :(得分:2)
以下是从my answer到先前有关使用li
和lw
的问题的示例:
给出以下代码:
.data
ten: .word 10
.text
main:
lw $t0, ten
SPIM将为lw
生成以下指令序列:
0x3c011001 lui $1, 4097 ; lw $t0,ten
0x8c280000 lw $8, 0($1)
ten
的地址首先放在$1
($at
)中,然后从该地址加载值。
或许sw
会是一个更好的例子。在lw
的情况下,我认为您可以将lw
扩展为lui $8, 4097 / lw $8, ($8)
。但在sw
的情况下,您不希望用地址覆盖$t0
。