[RISC-V MCU 应用开发]

RISC指令能不能直接处理立即数呢?

[复制链接]
2845|7
手机看帖
扫描二维码
随时随地手机跟帖
laocuo1142| | 2021-4-16 14:48 | 显示全部楼层
我觉得数据总线、数据寄存器、指令寄存器和数据总线都是32位的吧,对精简指令来说

使用特权

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

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

使用特权

评论回复
pattywu| | 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指令读常数。

使用特权

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

使用特权

评论回复
redone| | 2021-6-19 16:09 | 显示全部楼层
这个,这个。。。。。能用C开发么?

使用特权

评论回复
pattywu| | 2021-6-20 18:37 | 显示全部楼层
用C开发,肯定是没问题的。
编译器辛苦点。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

139

主题

802

帖子

0

粉丝