news 2026/4/18 6:03:42

【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/17 19:17:59

开源大模型文档处理新选择:MinerU镜像一键部署指南

开源大模型文档处理新选择:MinerU镜像一键部署指南 PDF文档解析长期是技术落地的“隐形瓶颈”——多栏排版错乱、表格结构塌陷、数学公式识别失败、图片位置漂移……这些问题让科研人员、工程师和内容运营者反复在OCR工具、人工校对和格式重排之间疲于奔命。直到Mi…

作者头像 李华
网站建设 2026/4/17 18:38:04

DeepSeek-R1-Distill-Qwen-1.5B加载失败?缓存路径修复步骤详解

DeepSeek-R1-Distill-Qwen-1.5B加载失败?缓存路径修复步骤详解 你兴冲冲地准备好GPU环境,敲下启动命令,结果终端弹出一长串红色报错——OSError: Cant load config for deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B,或者更扎心的 …

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

SGLang结构化生成扩展:自定义格式输出教程

SGLang结构化生成扩展:自定义格式输出教程 1. 为什么你需要结构化生成能力 你有没有遇到过这些情况? 调用大模型生成JSON,结果返回了一段乱七八糟的文本,还得自己写正则去提取;做API对接时,模型输出格式…

作者头像 李华
网站建设 2026/4/17 20:45:42

Qwen2.5降本实战:0.5B小模型如何实现零GPU高效运行

Qwen2.5降本实战:0.5B小模型如何实现零GPU高效运行 1. 为什么0.5B小模型突然“火”了? 你有没有试过在一台没有显卡的旧笔记本上跑大模型?点下“发送”后,光标转圈转了两分钟,最后弹出一句:“抱歉&#x…

作者头像 李华
网站建设 2026/4/16 18:49:49

Qwen3-4B和DeepSeek编程能力对比:代码生成任务实战评测指南

Qwen3-4B和DeepSeek编程能力对比:代码生成任务实战评测指南 1. 引言:为什么这次对比值得关注 你有没有遇到过这种情况:写代码卡在某个函数实现上,翻文档、查Stack Overflow还是没头绪?如果有个AI能直接帮你写出可运行…

作者头像 李华