我正在尝试用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
答案 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中也提到了它,所以它应该有效。