0

我正在尝试在 mars 中执行一个程序,该程序使用 $sp 可以跳转到堆栈的下一个地址并读取值:

fine_while:

add $a0, $S,$a2
li $v0, 1
syscall
move  $t5, $sp#indirizzo iniziale
move $sp, $t6 #indiirzzi di -51
subi  $sp, $sp, 4 #shifto di una podizione il sp ora come se 2 fosse quello iniziale.probabilmente i negativ occupano + byte
lw $a2, ($sp)
move $t6, $sp #e lo pongo uguale ad a2 #ATTENZIONE! qui stai ponendo il ad a2 l'indirizzo!!!
move $sp, $t5#riprsitino l sp
#incremenro sp di 4 per prepararmk ad immagazinare 4
#chiamare un nuobo elmeneto (4) e mettilo 
li $v0 , 5
syscall 
move $a1, $v0 
subi  $sp, $sp, 4 
sw $a1,($sp)
beqz $a1 , end  
sub $S, $S,$a2 #qui difatti stai sottraendo l indirzzo e non il contenuto...
add $S,$S, $a1
j fine_while

这只是一个来源,因为还有另一个操作(我有一个数字序列并将其保存到堆栈中),问题是在我跳转到下一个堆栈地址以达到下一个数字时 mips 说这个单元格等于零,但为什么呢?在牢房里有一个我分配的号码,对吗?但它就像是空的,为什么?谢谢你

4

0 回答 0