$at 寄存器在 MIPS 中的使用示例

Example usage of $at register in MIPS

我的教科书说 MIPS 汇编程序必须将大常量分成几部分,然后将它们重新组合成一个寄存器。并且它使用 $at 作为

的临时寄存器

我一直在寻找这方面的具体示例,有人有吗?

我看到一些网站说la伪指令转换为使用$at的指令,但似乎不需要。例如:

la $t0, 0xABCD1234

转换为

lui $t0, 0xABCD
ori $t0, $t0, 0x1234

这是从 中提取的一个示例,用于解决有关 lilw 的使用的早期问题:

给定以下代码:

.data
ten: .word 10

.text 
main:
    lw $t0, ten

SPIM 将为 lw:

生成以下指令序列
0x3c011001  lui , 4097                    ; lw $t0,ten
0x8c280000  lw , 0()

先把ten的地址放在</code>(<code>$at),然后从那个地址加载值

也许 sw 会是一个更好的例子。在 lw 的情况下,我想您可以将 lw 扩展为 lui , 4097 / lw , ()。但是在 sw 的情况下,您不想用地址覆盖 $t0