计算机基础实战课
彭东
网名 LMOS,Intel 傲腾项目关键开发者
19719 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 57 讲
计算机基础实战课
15
15
1.0x
00:00/00:00
登录|注册

19|RISC-V指令精讲(四):跳转指令实现与调试

你好,我是 LMOS。
前面我们学习了无条件跳转指令,但是在一些代码实现里,我们必须根据条件的判断状态进行跳转。比如高级语言中的 if-else 语句,这是一个典型程序流程控制语句,它能根据条件状态执行不同的代码。这种语句落到指令集层,就需要有根据条件状态进行跳转的指令来支持,这类指令我们称为有条件跳转指令。
这节课,我们就来学习这些有条件跳转指令。在 RISC-V 指令集中,一共有 6 条有条件跳转指令,分别是 beq、bne、blt、bltu、bge、bgeu。
这节课的配套代码,你可以从这里下载。

比较数据是否相等:beq 和 bne 指令

我们首先来看看条件相等跳转和条件不等跳转指令,即 beq 指令和 bne 指令,它们的汇编代码书写形式如下所示:
beq rs1,rs2,imm
#beq 条件相等跳转指令
#rs1 源寄存器1
#rs2 源寄存器2
#imm 立即数
bne rs1,rs2,imm
#bne 条件不等跳转指令
#rs1 源寄存器1
#rs2 源寄存器2
#imm 立即数
上述代码中,rs1、rs2 可以是任何通用寄存器,imm 是立即数(也可称为偏移量),占用 13 位二进制编码。请注意,beq 指令和 bne 指令没有目标寄存器,就不会回写结果。
我们用伪代码描述一下 beq 指令和 bne 指令完成的操作。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

RISC-V指令集中的有条件跳转指令包括beq、bne、blt、bltu、bge和bgeu,它们分别用于条件相等跳转、条件不等跳转、小于则跳转、无符号数小于则跳转、大于等于则跳转以及无符号数大于等于则跳转。本文通过讲解这些指令的汇编代码书写形式和伪代码描述,以及通过代码验证的方式,深入浅出地介绍了这些有条件跳转指令的功能和使用方法。通过对这些指令的深入讲解和实际验证,读者可以快速了解RISC-V指令集中有条件跳转指令的特点和使用技巧。文章还通过调试验证了这些指令的功能细节,帮助读者更好地理解和掌握这些指令。同时,文章还提到了这些指令的二进制数据和操作码的相关内容,为读者提供了更全面的知识视角。通过本文的学习,读者可以掌握RISC-V指令集中六条有条件跳转指令的使用方法和特点,为进一步学习和应用提供了基础知识。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《计算机基础实战课》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(5)

  • 最新
  • 精选
  • 极客酱酱
    终于了解了高级语言是怎么实现函数返回和调用的了

    作者回复: 哈哈 加油

    2022-09-10归属地:湖北
    2
  • 苏流郁宓
    俺更好奇,RIScv基本指令中怎么实现接口的功能(比如不同厂家在基本指令上扩展,为了实现不同riscv+指令,能够实现互联互通,需要基本指令怎么实现接口功能,避免碎片化(不同指令集互通不了))

    作者回复: 那是硬件 内部 的实现

    2022-09-07归属地:湖北
    1
  • 苏流郁宓
    答:不需要再增加多余比较指令,上面的跳转指令混合使用就能实现相同的功能的,riscv类似软件功能的模块化设计,不需要搞那么多比较指令的,只要无符号比较和有符号比较上基本扩展就行的 啊

    作者回复: 是的

    2022-09-07归属地:湖北
    1
  • Geek_5ed498
    这节课程的标题是不是应当修改为“跳转指令的应用与调试”更合适一些
    2023-12-01归属地:北京
  • xavier
    小于等于可以使用 小于和相等跳转指令组合,那就需要多一条判断指令。比如这样一条语句: a ≤ 3,那么写成 a < 4, 就少了相等判断,执行效率更高。
    2023-06-28归属地:四川
收起评论
显示
设置
留言
5
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部