我试图使用堆栈将动态数组存储到程序中,首先读取输入n,然后使用[n]输入创建堆栈。但是,当我尝试存储单词时,会产生一个我不理解的错误。
.data
ask_for_size: .asciiz "\nInsert the array size\n"
ask_for_int: .asciiz "\nInput number\n"
input: .space 16
.text
Main:
li $v0,4
la $a0,ask_for_size
syscall
li $v0,5
la $a0,input
syscall
add $t0,$v0,$zero
li $sp,0x00001000 #stack pointer
li $s0,0x00001000 #base pointer
la $a0,ask_for_int
Loop1:
li $v0,4
syscall
li $v0,5
syscall
sw $v0,0($sp)
addi $sp,$sp,-4
addi $t0,$t0,-1
bne $t0,$zero,Loop1
j Loop2
Loop2:
答案 0 :(得分:1)
在sw $ v0进入之前,你不应该向$ sp添加-4吗?
addi $sp,$sp,-4
sw $v0,0($sp)
在我看来,此时你正在覆盖为你的流程分配的$ sp的结尾。
此外,您只需加载$ a0一次。你确定它没有被修改吗?否则,这可能会更好吗?
Loop1:
li $v0,4
la $a0,ask_for_int
syscall
...