MIPS / QtSpim寄存器1保留用于汇编器错误

时间:2017-12-12 10:50:43

标签: assembly mips qtspim

我正在尝试用MIPS编写汇编程序,当我尝试使用没有伪指令的for循环时,我在QtSpim中得到错误,说“寄存器1在文件E的第16行为汇编程序保留:/ Rechnerorganisation / Qtspim / Rechneruebung Vorgaben / minimum_finden.s   slt $ at,$ t0,$ a1 #slt(i“。任何人都可以帮助我吗?

findminimum:
addi    $t0, $zero, 1       #int i = 1
add     $t1, $zero, $zero   #beginn vom laden von int min = a[0]
sll     $t1, $t1, 2
add     $t1, $a0, $t1
lw      $t1, 0($t1)         #min = a[0
for:slt     $at, $t0, $a1       #slt (i<n) # line 16
beq     $at, $zero, endfor  #if(i>=n) go to endfor
sll     $t2, $t0, 2     
add     $t2, $a0, $t2

1 个答案:

答案 0 :(得分:1)

根据某些google group post,您可以暂时关闭仅为汇编程序保留的at

    .set noat   # switch off assembler warning about $at usage
    ... your code using $1 ...
    .set at     # switch on assembler warning about $at usage

没有验证我自己,我只安装了MARS,并且我可以在没有任何警告或错误的情况下利用at,这是我自己的风险(因为我没有通过伪识别at隐藏方式的指令 - 但是我总是在完全反汇编的情况下调试,所以我会尽早发现这个问题。

编辑:spim documentation中也提到了它,所以它应该有效。