news 2026/4/2 9:12:54

【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/3/23 7:13:48

Llama3-8B如何连接Open-WebUI?界面配置步骤详解

Llama3-8B如何连接Open-WebUI?界面配置步骤详解 1. 为什么选择 Llama3-8B 配合 Open-WebUI? 你是不是也遇到过这些问题:想本地跑一个真正好用的大模型,但显存不够、部署太复杂、界面又丑得没法日常使用?别折腾了——…

作者头像 李华
网站建设 2026/4/2 4:45:55

Veo 3.1全面进化:解锁创意,精准掌控每一帧

【重磅!Veo 3.1 全面进化,重新定义你的视频创】视频创作工具 Veo 最近迎来颠覆性升级。全新的 Veo 3.1 不仅在画质与动态效果上大幅提升,更首次原生支持 9:16 纵向视频格式,让移动端创作从此告别裁剪与妥协。无论你是随手记录生活…

作者头像 李华
网站建设 2026/3/29 22:03:31

通义千问3-14B怎么开启Thinking模式?详细参数配置指南

通义千问3-14B怎么开启Thinking模式?详细参数配置指南 1. 什么是通义千问3-14B? 你有没有遇到过这种情况:想要一个推理能力强的大模型,但显卡只有单张RTX 4090,预算有限,又不想牺牲太多性能?如…

作者头像 李华
网站建设 2026/3/26 22:15:48

如何用Qwen2.5-0.5B实现流式输出?详细步骤解析

如何用Qwen2.5-0.5B实现流式输出?详细步骤解析 1. 为什么小模型也能“边想边说”? 你有没有试过和AI聊天时,等它“憋”出一整段回答才开始显示?那种卡顿感,就像看着加载动画数秒——而Qwen2.5-0.5B-Instruct偏偏不走…

作者头像 李华
网站建设 2026/3/28 9:02:48

首涂三十一套和首涂三十二套,苹果cms付费模板

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 首涂三十一套和首涂三十二套,苹果CMS付费模板 注意:请不要修改模板文件名称,否则会打不开乱码等情况 把模板文件上传到template目录下解压 第一步…

作者头像 李华
网站建设 2026/3/29 21:54:33

YOLOv9 Torchaudio安装必要性:音频模块是否冗余?

YOLOv9 Torchaudio安装必要性:音频模块是否冗余? 你有没有在使用YOLOv9镜像时,看到torchaudio0.10.0这个依赖项,心里闪过一个疑问:“这玩意儿是干嘛的?我做目标检测,又不做语音识别&#xff0c…

作者头像 李华