尝试在mips汇编程序中执行非指令?

时间:2013-11-24 08:39:26

标签: mips

    .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执行非指令”请告诉我这是什么问题。

1 个答案:

答案 0 :(得分:7)

您需要使用jr $ra结束程序,否则处理器将继续执行sw $t0, 0($s1)之后发生的随机指令。