news 2026/4/16 17:19:31

【RISC-V】branch_test调用add_test陷入死循环的原因

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【RISC-V】branch_test调用add_test陷入死循环的原因

代码如下:

add_test: add a0, a0, a1 nop ret .global branch_test branch_test: li a0, 1 li a1, 2 call add_test nop ret

原因:原本寄存器ra存储的是父函数branch_test的返回地址,call add_test的时候把ra寄存器改成了存储子函数的返回地址,即下一条指令(nop指令)的地址,但父函数走完call后走nop走ret,因为ra寄存器的值,又回到了nop,然后ret......陷入死循环。

解决方法:

1、增加一个临时寄存器x18专门存放父函数的返回地址

add_test: add a0, a0, a1 nop ret .global branch_test branch_test: mv x18, ra li a0, 1 li a1, 2 call add_test nop mv ra, x18 ret

2、在内存中开辟一个栈存储父函数的返回地址

add_test: add a0, a0, a1 nop ret .global branch_test branch_test: addi sp, sp, -8 sd ra, (sp) li a0, 1 li a1, 2 call add_test nop ld ra, (sp) addi sp, sp, 8 ret
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 12:58:15

Tomcat+cpolar 让 Java Web 应用随时随地可访问

Tomcat 作为轻量级 Java 应用服务器,核心功能是稳定托管 Java Servlet 和 JSP 类型的 Web 应用,适配各类中小型 Java 项目的运行需求,适用人群涵盖 Java 开发人员、中小企业运维人员以及编程学习者。它的优点十分突出,部署流程简单…

作者头像 李华
网站建设 2026/4/15 23:24:09

MinerU 2.5-1.2B入门必看:输出路径设置与结果查看教程

MinerU 2.5-1.2B入门必看:输出路径设置与结果查看教程 1. 理解你的任务:为什么需要关注输出路径? 你拿到的这个镜像,不是普通的工具包,而是一套完整的视觉多模态推理系统。它内置了 MinerU 2.5-2509-1.2B 模型和 GLM…

作者头像 李华
网站建设 2026/4/16 12:34:46

5分钟上手Open-AutoGLM:小白也能玩转AI手机助理

5分钟上手Open-AutoGLM:小白也能玩转AI手机助理 1. 什么是Open-AutoGLM? 1.1 让你的手机拥有“超级大脑” 你有没有想过,有一天只要说一句话,手机就能自动帮你完成所有操作?比如:“打开小红书搜美食”、…

作者头像 李华
网站建设 2026/4/16 14:12:17

强烈安利10个AI论文工具,研究生搞定毕业论文!

强烈安利10个AI论文工具,研究生搞定毕业论文! AI 工具助力论文写作,效率翻倍 在研究生阶段,论文写作是每位学生必须面对的重要任务。而随着 AI 技术的不断进步,越来越多的 AI 工具被引入到学术写作中,极大地…

作者头像 李华
网站建设 2026/4/16 12:56:58

FSMN-VAD服务守护:后台常驻进程配置教程

FSMN-VAD服务守护:后台常驻进程配置教程 1. 为什么需要让FSMN-VAD服务“一直在线” 你可能已经成功跑通了FSMN-VAD语音端点检测的Web界面——上传一段录音,点击检测,几秒后看到清晰的时间戳表格。但很快会发现一个问题:关掉终端…

作者头像 李华
网站建设 2026/4/16 13:05:47

5分钟搞定Qwen-Image-Layered环境搭建,超简单教程

5分钟搞定Qwen-Image-Layered环境搭建,超简单教程 你是否曾为一张图片的局部修改而大费周章?比如想换个背景、调个颜色,却不得不从头重做整个设计。现在,Qwen-Image-Layered 正在改变这一切。它不仅能生成高质量图像,…

作者头像 李华