我有一個小問題,我似乎無法解決。我有幾個數字以下列方式存儲在堆棧中:加載地址存儲在MIPS寄存器中
|5| 0($sp)
|4| 4($sp)
|3|
|8|
我想遍歷堆棧,一次比較兩個數字。通過這個,我的意思是我想比較0($ sp)和4($ sp),然後是0($ sp)和8($ sp),...,然後是4($ sp)和8 SP)。所以,5比4,5比3,5,8分,4比3,4,8分,3比8.
我在此嘗試是
lw $t3, 0($sp) ##
la $t4, 4($sp) ##
Sum2:
beq $t2, $zero, Exit
lw $t5, $t4 ##
add $a0, $t5, $zero
li $v0, 1
syscall
add $t4, $t4, 4
addi $t2, $t2, -1
j Sum2
主要的第一,第二,和第五行。 我正在將堆棧頂部的整數值加載到$ t3中,並將堆棧中下一項的地址加載到$ t4中。
然後,我想加載值在存儲在$ t4的地址,做我的比較(現在我只是加到零,所以我可以打印它),然後增加存儲在t4的地址4字節來獲得堆棧中的第三項。我會一直這樣做直到寄存器值達到0。一旦發生這種情況,我會將$ sp增加4並重復這個過程。
每當我嘗試在PCSpim中加載這個,我得到一個語法錯誤。我究竟做錯了什麼?
'la'不是MIPS指令。 (第2行) – paislee 2012-01-28 20:29:24
這是一個僞指令,在這種情況下變成addiu t4,sp,4。 – 2012-01-28 20:55:01
如果您希望人們繼續回答您的問題,請接受正確答案。 – m0skit0 2012-02-02 09:52:08