0

我试图只打印这 3 个整数,但我收到错误“--程序已完成运行(从底部掉下)--”。当我将我的代码与其他有效的代码进行比较时,我无法确切地看到我做错了什么。这对我来说看起来不错:

.data
    a: .word 3, 2, 1
main:   
    li $s0, 0 #i = 0
    li $s1, 3 #iterations = 3
    la $s2, a #s2 = adress of arr[0]
loop:
    beq $s0, $s1, end #if i == 3, ends
    lw $t0, 0($s2) #loads value of a[0] into t0
    addi $s2, $s2, 4 #goes to next element of array
    addi $s0, $s0, 1 #i++
    
    
    #some printing function I found online
    li $v0, 4
    lw $a0, 0($t0)
    syscall
    
    j loop
    
end:    
4

1 回答 1

0
  • 您将两次取消引用指向数组的指针,这在这种情况下没有意义,因为一次取消引用就足以从整数数组中获取整数值。如果您有一个指针数组,则可能会指示第二次取消引用。不确定您使用的是什么模拟器或其配置,但它应该在第二次取消引用时给出内存访问错误,因为小整数不是有效的指针。

  • 一个程序应该告诉操作环境或模拟器在它完成后退出——你的不这样做。

于 2021-12-02T22:29:57.253 回答