程序计数器值无效:0

Kre*_*wie 2 assembly mips mars-simulator

我目前正在使用MIPS处理器下的汇编语言.我目前正在使用MARS模拟器,由于原因未知,每次运行后都会收到以下错误消息:

Go:运行try.s

错误:程序计数器值无效:0

Go:执行因错误而终止.

我得到这个错误消息独立于我正在使用的代码,只是想知道这是否是MARS模拟器中的错误或者是否是我缺少的东西.

Fab*_*sen 8

你可能用a jr $ra(返回调用者)完成你的程序.但是,MARS执行的代码没有调用者 - 它在启动时执行,没有返回的函数,因此内容$ra为零.

在MARS上结束程序的正确方法是使用"exit"系统调用:

    li $v0, 10
    syscall
Run Code Online (Sandbox Code Playgroud)


小智 5

我是MIPS的新手,我遇到了这个问题.这就是我所拥有的:

    .data

    .text

swap:
    # do stuff
    jr  $ra

main:
    # do stuff
    jal swap
    li  $v0,10
    syscall
Run Code Online (Sandbox Code Playgroud)

我修改它来修改它:

    .data

    .text
main:
    # do stuff
    jal swap
    li  $v0,10
    syscall

swap:
    # do stuff
    jr  $ra
Run Code Online (Sandbox Code Playgroud)

注意我把main移到了swap之前.我错误地认为main是一个保留标签.而且它会自动直接跳到主要的第一位.但显然事实并非如此,因为在我打电话给jal swap之前,它正在点击我的jr $ ra指令.

无论如何,我希望这会有所帮助.