我的教科书说,MIPS 汇编器必须将大常量分解成片段,然后将它们重新组装到寄存器中。并且它使用 $at 作为临时寄存器
我一直在寻找一个具体的例子,有人有吗?
我看到一些网站说la伪指令使用 转换为指令$at,但这似乎不需要。例如:
la $t0, 0xABCD1234
Run Code Online (Sandbox Code Playgroud)
转换成
lui $t0, 0xABCD
ori $t0, $t0, 0x1234
Run Code Online (Sandbox Code Playgroud)
这是我li对之前有关and的使用的问题的回答中的一个示例lw:
给出以下代码:
.data
ten: .word 10
.text
main:
lw $t0, ten
Run Code Online (Sandbox Code Playgroud)
SPIM 将为 生成以下指令序列lw:
0x3c011001 lui $1, 4097 ; lw $t0,ten
0x8c280000 lw $8, 0($1)
Run Code Online (Sandbox Code Playgroud)
首先将的地址ten放入$1( $at),然后从该地址加载值。
也许sw会是一个更好的例子。在这种情况下,lw我想你可以将其扩展lw为lui $8, 4097 / lw $8, ($8). 但如果sw您不想用$t0地址覆盖。