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

22|RISC-V指令精讲(七):访存指令实现与调试

你好,我是 LMOS。
上节课我们说了 RISC-V 是加载储存体系结构的典型,只有加载指令和储存指令才有资格访问内存。
计算机运算完成的结果,一开始会放在寄存器中,但最终归宿还是内存,此时就需要存储指令发挥作用了。这节课我们就来看看 RISC-V 提供的存储指令,一共有三条,分别是储存字节指令、储存双字节指令和储存字指令。
课程的代码你可以从这里下载。话不多说,咱们进入正题。

储存字节指令:sb 指令

我们先从储存字节指令,即 sb 指令学起。
这个指令存储的字节单位是一个字节,也就是 8 位数据。说得再具体一些,这个指令会把一个通用寄存器里的低[7:0]位,储存到特定地址的内存单元里。而这个特定地址,要由另一个通用寄存器和一个立即数之和来决定。
储存字节指令的汇编代码,书写形式如下所示:
sb rs2,imm(rs1)
#sb 储存字节指令
#rs2 源寄存器2
#rs1 源寄存器1
#imm 立即数(-2048~2047)
上述代码中 rs1 和 rs2 可以是任何通用寄存器。立即数 imm 为 12 位二进制数据,其范围是 -2048~2047。因为 rs1、rs2 以及立即数 imm 的规定,对后面的 sh 指令和 sw 指令同样适用,后面我就不重复说了。
sb 指令完成的操作用伪代码描述是这样的:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

RISC-V存储指令是计算机体系结构中的重要组成部分。本文详细介绍了RISC-V提供的三条存储指令:储存字节指令(sb)、储存双字节指令(sh)和储存字指令(sw)。通过对每条指令的汇编代码、操作描述和代码验证的讲解,读者可以快速了解这些存储指令的功能和使用方法。文章通过实际代码验证了每条指令的正常工作,帮助读者更好地理解存储指令的实际应用。此外,文章还提供了相关的汇编代码和调试截图,使读者能够更直观地了解存储指令的执行过程和结果。通过本文的阅读,读者可以快速掌握RISC-V存储指令的基本知识,为进一步深入学习和应用提供了重要参考。文章还介绍了编译器使用压缩指令的情况,以及对应的二进制数据。总的来说,本文通过详细的讲解和实例验证,使读者对RISC-V存储指令有了全面的了解,为进一步学习和应用提供了良好的基础。

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

全部留言(3)

  • 最新
  • 精选
  • 苏流郁宓
    好像上一节问过,储存字节指令,双字节指令,字指令。数据符号可以通过指令翻译来实现,没必要在储存环节特意把有符号和无符号数据分开储存的啊

    作者回复: 改了 重复了

    2022-09-14归属地:湖北
    2
    1
  • LockedX
    既然加载指令已经解决了符号数的问题,存储就不用管这个问题,就存储二进制数据就可以啦

    作者回复: 嗯 嗯 是的

    2022-09-16归属地:湖北
  • Bean
    加载指令,CPU无法预测该怎么补高位,于是需要编译器/程序员通过不同指令来区分。而存储指令,CPU只需要截取不需要的高位,简单粗暴,截多少是编译器/程序员的事情,截错了也是编译器/程序员的锅,不是CPU的执行问题。
    2023-01-16归属地:陕西
收起评论
显示
设置
留言
3
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部