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

SIC中链接寄存器的作用、RETADR存储意义及子程序调用机制问询

SIC链接寄存器作用与子程序调用机制

一、链接寄存器(LR)的实际作用

SIC架构里,链接寄存器的核心功能就是保存子程序调用后的返回地址:当主程序执行JSUB指令调用子程序时,CPU会自动把JSUB下一条指令的地址存入LR,这样子程序执行完后,就能通过LR找到回到主程序的位置。

二、程序中存储LR到RETADR的原因

你提供的这段汇编代码是子程序的入口部分:

  • 虽然当前代码片段没看到RSUB,但如果这个子程序后续还要调用其他子程序(执行新的JSUB),新的JSUB会覆盖LR里的值(每次JSUB都会把新的返回地址写入LR)。
  • 提前用STL RETADR把LR的值存到内存,是为了保存当前的返回地址,避免被后续的子程序调用覆盖。等需要返回主程序时,再把RETADR里的值重新加载回LR,执行RSUB就能正确返回。

三、SIC的子程序调用完整流程

  1. 主程序发起调用:执行JSUB 子程序名指令
    • CPU自动将JSUB下一条指令的地址写入LR
    • 程序计数器(PC)跳转到子程序入口,开始执行子程序逻辑
  2. 子程序保存返回地址(按需操作):如果子程序要嵌套调用其他子程序,就先把LR的值存入内存(比如你的代码里的操作);如果不需要嵌套,这一步可以省略
  3. 子程序执行功能:完成自身任务,若有嵌套调用,执行完子子程序后要恢复之前保存的LR值
  4. 子程序返回:执行RSUB指令
    • CPU自动将LR中的值加载到PC
    • PC回到主程序中JSUB的下一条指令,继续执行主程序逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 18:50:00