[MCU]

一个c51程序移植到ARM,编译的code差别很大

[复制链接]
1157|18
手机看帖
扫描二维码
随时随地手机跟帖
吾要单片机|  楼主 | 2021-11-15 20:19 | 显示全部楼层
14KB的代码长度还没有包含RO的长度呢,RO是1.2KB

使用特权

评论回复
ayb_ice| | 2021-11-16 08:35 | 显示全部楼层
这不稀奇,M0本身就不怎么样,特别是GPIO操作又慢又费空间

使用特权

评论回复
xinyue_z| | 2021-11-16 08:54 | 显示全部楼层
51是8位单片机,指令长度是8位的,而arm是32位单片机,指令长度32位,当然也支持16位的Thumb,所以相同的代码,在arm上比51上大一倍是正常的

使用特权

评论回复
前功尽弃| | 2021-11-16 10:12 | 显示全部楼层
是不是还有人家arm芯片的库文件代码吧?

使用特权

评论回复
keer_zu| | 2021-11-16 11:20 | 显示全部楼层
够用就行

使用特权

评论回复
aple0807| | 2021-11-16 11:20 | 显示全部楼层
优化等级呢? -O3,  op for size试试。 51一般默认开到8级优化。

使用特权

评论回复
aple0807| | 2021-11-16 11:26 | 显示全部楼层
xinyue_z 发表于 2021-11-16 08:54
51是8位单片机,指令长度是8位的,而arm是32位单片机,指令长度32位,当然也支持16位的Thumb,所以相同的代 ...

你这个算法是不对的,51花指令,指令长度1~n字节不等。 M0 thumb2,绝大多数指令2字节,部分4字节。 区别最大的是指令效率。 M0算个uint32加法,一条指令,51要十几条。其他的多字节运算都差不多这样。

使用特权

评论回复
imdx| | 2021-11-16 12:15 | 显示全部楼层
51是CISC。感觉51的寿命会比Cortex-M要长。

使用特权

评论回复
海洋无限| | 2021-11-16 12:19 | 显示全部楼层
不知道有没有用library

使用特权

评论回复
e21| | 2021-11-16 12:22 | 显示全部楼层
aple0807 发表于 2021-11-16 11:26
你这个算法是不对的,51花指令,指令长度1~n字节不等。 M0 thumb2,绝大多数指令2字节,部分4字节。 区别 ...

一般都都是8和16的变量用得多,特别是楼主原来是51的,可能还有很多1bit的变量,这个转到32就更多指令了.

使用特权

评论回复
吾要单片机|  楼主 | 2021-11-16 12:44 | 显示全部楼层
只要不是16位或32位的数据运算,ARM代码密度远不如C51

使用特权

评论回复
lu50211| | 2021-11-16 13:07 | 显示全部楼层
用了库的吧,

使用特权

评论回复
m564522634| | 2021-11-16 13:41 | 显示全部楼层
指令长度不一样  

使用特权

评论回复
xinyue_z| | 2021-11-16 15:25 | 显示全部楼层
aple0807 发表于 2021-11-16 11:26
你这个算法是不对的,51花指令,指令长度1~n字节不等。 M0 thumb2,绝大多数指令2字节,部分4字节。 区别 ...

c51上单字节和双字节指令占了绝大多数,参考https://blog.csdn.net/oNicolasCage/article/details/46228269,另外请确认两者设定的编译优化选项是否相同。如果实在想搞清楚到底区别在哪里,可以分析一下.map文件,里面每一个函数占用的字节数都有详细的数据

使用特权

评论回复
trucyw| | 2021-11-16 16:24 | 显示全部楼层
两个速度都不一样

使用特权

评论回复
xiaofei558008| | 2021-11-16 19:05 | 显示全部楼层
代码库占了很大空间

使用特权

评论回复
90houyidai| | 2021-11-16 23:20 | 显示全部楼层
我觉得现在MCU性能过剩的情况下(相对以前)这些都可以不考虑

使用特权

评论回复
qin552011373| | 2021-11-18 15:47 | 显示全部楼层
这些对于arm来说不叫事了

使用特权

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

本版积分规则

52

主题

441

帖子

7

粉丝