打印
[RISC-V MCU 应用开发]

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

[复制链接]
3231|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
内政奇才|  楼主 | 2021-4-16 14:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
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位数据到寄存器,无论结果,还是指令数、代码长度以及指令执行时间,二者没什么区别。

使用特权

评论回复
5
吾要单片机| | 2021-4-16 18:20 | 只看该作者
楼上说得对,也可以使用LD指令读常数。

使用特权

评论回复
6
merry_zsp| | 2021-4-17 16:08 | 只看该作者
RISC-V使用I-type格式的指令和U-type格式的指令加载立即数,I-type格式包含12位立即数,U-type格式包含20位立即数,而且这20位是加载到寄存器的高20位的。

使用特权

评论回复
7
redone| | 2021-6-19 16:09 | 只看该作者
这个,这个。。。。。能用C开发么?

使用特权

评论回复
8
pattywu| | 2021-6-20 18:37 | 只看该作者
用C开发,肯定是没问题的。
编译器辛苦点。

使用特权

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

本版积分规则

153

主题

900

帖子

0

粉丝