21|RISC-V指令精讲(六):加载指令实现与调试
LMOS
你好,我是 LMOS。
之前我们已经学过了 RISC-V 中的算术指令、逻辑指令、原子指令。这些指令主要的操作对象是寄存器,即对寄存器中的数据进行加工,这是 RISC 体系的重要特性。
但你是否想过寄存器中的数据从哪里来呢?答案是从内存中来,经过存储指令加载到寄存器当中。
RISC-V 是一个典型的加载储存体系结构,这种体系类型的 CPU,只有加载与储存指令可以访问内存,运算指令不能访问内存。这节课我们就来学习一下 RISC-V 的加载指令。
顾名思义,加载指令就是从一个地址指向的内存单元中,加载数据到一个寄存器中。根据加载数据大小和类型的不同,加载指令还可以细分成五条加载指令,分别是加载字节指令、无符号加载字节指令、加载半字指令、无符号加载半字指令、加载字指令。
加载字节指令:lb 指令
我们先从加载字节指令开始说起。在研究加载字节指令之前,我们先来看看 RISC-V 的加载指令的格式,其对应的汇编语句格式如下:
对于加载指令,指令助记符可以是 lb、lbu、lh、lhu、lw,目标寄存器可以是任何通用寄存器,源操作数 1 也可以是任何通用寄存器,源操作数 2 则是立即数。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入讲解了RISC-V指令集中的加载指令,包括加载字节指令(lb)和无符号加载字节指令(lbu)的实现与调试,以及加载半字指令(lh)、无符号加载半字指令(lhu)和加载字指令(lw)的功能和验证过程。通过详细的汇编代码和伪代码解释,读者可以清晰了解指令的操作过程和实现原理。文章通过调试过程展示了指令的正常工作情况,帮助读者加深理解。总体而言,本文通过具体的例子和调试过程,生动地展现了RISC-V加载指令的实现与调试过程,适合对RISC-V指令集感兴趣的读者阅读学习。 文章重点回顾了学习的五条加载指令,分别是加载字节指令、无符号加载字节指令、加载半字指令、无符号加载半字指令、加载字指令,强调了它们对不同大小和符号的数据加载的处理能力,为高级语言实现有无符号的类型变量提供了基础,让开发工作更便利。最后,文章提出了思考题,引发读者思考加载指令中处理数据符号问题的原因。 总的来说,本文通过具体的例子和调试过程,生动地展现了RISC-V加载指令的实现与调试过程,适合对RISC-V指令集感兴趣的读者阅读学习。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《计算机基础实战课》,新⼈⾸单¥68
《计算机基础实战课》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(2)
- 最新
- 精选
- 苏流郁宓作者已经说过五个加载指令可以处理有符号或者无符号的数据,猜想储存数据模式(指令加数据),应该可以通过无符号统一储存数据模式中的数据部分,然后在运算时通过指令翻译成有符号的数据就行!
作者回复: 储存指令不需要管符号问题 内存中的数据它不能直接参与运算,需要先加载到寄存器中才可以
2022-09-12归属地:湖北1 - jeigiye取32位,已经包括符号位了。
作者回复: 是的
2022-09-15归属地:湖北
收起评论