.data
stack: .word 3, 2
.text
.globl main
main:
la $s1, stack #assign stack start memory to $s1
addi $t3, $t3, 0 #clear $t3
addi $t3, $t3, 4 #assign 4 to $t3
add $s1, $s1, $t3 #second member of stack
lw $t1, 0($s1) #d2
addi $t3, $t3, -4 #move $t3 forward
add $s1, $s1, $t3 #first member of stack
lw $t0, 0($s1) #d1
add $t0, $t0, $t1 #d1 = d1 +d2
sw $t0, 0($s1) #store new d1 at d1's location
我正在尝试创建一个mips程序,它获取堆栈的最后一个和最后一个成员,并添加它们并存储它。我不关心addi $ t3,$ t3,4或堆栈:.word 3,2它只是用于测试。
然而,当我在qtspim运行时,我收到一条错误消息“尝试在0x0040004c执行非指令”请告诉我这是什么问题。
答案 0 :(得分:7)
您需要使用jr $ra
结束程序,否则处理器将继续执行sw $t0, 0($s1)
之后发生的随机指令。