我正在尝试用MIPS编写一个汇编程序,当我试图使用一个没有伪指令的for循环时,我在QtSpim中得到了这样的错误:“寄存器1是为文件E:/Rechnerorganisation/Qtspim/Rechneruebung Vorgaben/minimum_finden.s slt $at,$t0,$a1 #slt (i”)的第16行上的汇编程序保留的。有谁可以帮我?
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发布于 2017-12-12 18:56:57
根据一些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中也提到了这一点,所以它应该可以工作。
https://stackoverflow.com/questions/47770785
复制相似问题