22|RISC-V指令精讲(七):访存指令实现与调试
LMOS
你好,我是 LMOS。
上节课我们说了 RISC-V 是加载储存体系结构的典型,只有加载指令和储存指令才有资格访问内存。
计算机运算完成的结果,一开始会放在寄存器中,但最终归宿还是内存,此时就需要存储指令发挥作用了。这节课我们就来看看 RISC-V 提供的存储指令,一共有三条,分别是储存字节指令、储存双字节指令和储存字指令。
储存字节指令:sb 指令
我们先从储存字节指令,即 sb 指令学起。
这个指令存储的字节单位是一个字节,也就是 8 位数据。说得再具体一些,这个指令会把一个通用寄存器里的低[7:0]位,储存到特定地址的内存单元里。而这个特定地址,要由另一个通用寄存器和一个立即数之和来决定。
储存字节指令的汇编代码,书写形式如下所示:
上述代码中 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
《计算机基础实战课》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(3)
- 最新
- 精选
- 苏流郁宓好像上一节问过,储存字节指令,双字节指令,字指令。数据符号可以通过指令翻译来实现,没必要在储存环节特意把有符号和无符号数据分开储存的啊
作者回复: 改了 重复了
2022-09-14归属地:湖北21 - LockedX既然加载指令已经解决了符号数的问题,存储就不用管这个问题,就存储二进制数据就可以啦
作者回复: 嗯 嗯 是的
2022-09-16归属地:湖北 - Bean加载指令,CPU无法预测该怎么补高位,于是需要编译器/程序员通过不同指令来区分。而存储指令,CPU只需要截取不需要的高位,简单粗暴,截多少是编译器/程序员的事情,截错了也是编译器/程序员的锅,不是CPU的执行问题。2023-01-16归属地:陕西
收起评论