搜索

[RISC-V MCU 应用开发] RISC指令能不能直接处理立即数呢?

[复制链接]
114|5
 楼主 | 2021-4-16 14:44 | 显示全部楼层 |阅读模式
| 2021-4-16 14:48 | 显示全部楼层
我觉得数据总线、数据寄存器、指令寄存器和数据总线都是32位的吧,对精简指令来说

使用特权

评论回复
| 2021-4-16 16:31 | 显示全部楼层
32位指令还怎么装得下32位立即数

肯定要有立即数啊,不然效率多差,而且指令有长有短,用不完的部分做立即数刚好。
不一定要32位立即数啊,一般范围都较小,但能满足大部分应用了。
要得到较大数据,一般通过间接取数的方式来得到。

使用特权

评论回复
| 2021-4-16 16:43 | 显示全部楼层
本帖最后由 pattywu 于 2021-4-16 21:08 编辑

RISC-V的立即数处理,是分2条指令,分2次处理的。
32位立即数,由编译器把它拆分20位+12位的形式,分别存放在前后2条指令里。
反正32位的立即数占用了32位,处理指令本身也要占空间,这样也算合理。
比如:加载32位立即数寄存器,可以分为:
1、把低12位+0寄存器,结果存放在待加载的寄存器;
2、高20位+待加载寄存器,结果存放待加载寄存器。
跟直接加载32位数据到寄存器,无论结果,还是指令数、代码长度以及指令执行时间,二者没什么区别。

使用特权

评论回复
| 2021-4-16 18:20 | 显示全部楼层
楼上说得对,也可以使用LD指令读常数。

使用特权

评论回复
| 2021-4-17 16:08 | 显示全部楼层
RISC-V使用I-type格式的指令和U-type格式的指令加载立即数,I-type格式包含12位立即数,U-type格式包含20位立即数,而且这20位是加载到寄存器的高20位的。

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 我要提问 投诉建议 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表