You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MIPS汇编jal指令未保存返回地址报PC 0x00000000错误咨询

问题分析

你遇到的报错和jal指令本身无关,并非jal未成功存储返回地址,核心问题如下:

  • 绝大多数MIPS汇编模拟器(如SPIM、MARS)默认会执行.text段的第一条指令,你的代码中.text段下第一个定义的标签是Read_Input,程序启动时会直接从该函数开始执行,而非你声明的main函数。此时$ra寄存器还未被任何jal指令赋值,初始值为0x0,执行到Read_Input末尾的jr $ra时就会跳转到0x0地址,触发非法程序计数器报错。
  • 即使你声明了.globl main,大部分模拟器默认不会自动将main识别为入口地址,需要手动开启对应配置或者调整代码顺序。
修复方案

有两种常用修复方式:

  • 调整代码顺序,将main函数放到.text段的最开头,保证程序启动首先执行main逻辑:
.globl main

.data

.text

main:
    jal Read_Input
    move $t1, $v0
    
    jal Read_Input
    move $t2, $v0
    
    jal Read_Input
    move $t3, $v0
    
    nop
    
END:
    li  $v0, 10
    syscall

Read_Input: 
    li $v0, 5
    syscall
    jr $ra
  • 修改模拟器配置,指定main为程序入口。以MARS为例,点击顶部菜单栏「Settings」 -> 勾选「Initialize Program Counter to 'main' if defined」,保存后重启运行即可。

内容的提问来源于stack exchange,提问作者Leon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 17:39:03