打印

关于M0与8位 MCU代码量的问题

[复制链接]
4145|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
HWM| | 2012-5-21 23:38 | 只看该作者
M0 的指令系统并非8位,自然差异很大。

使用特权

评论回复
板凳
houmeixin8051| | 2012-5-21 23:51 | 只看该作者
2# HWM
请问能具体一点么

使用特权

评论回复
地板
ayb_ice| | 2012-5-22 08:29 | 只看该作者
MO是THUMB指令,长度2字节,当然大了

使用特权

评论回复
5
airwill| | 2012-5-22 09:30 | 只看该作者
我觉得这样的说法有些欠妥, 我在第一次从 51 转向 arm 的时候, 将项目的代码基本功能不变的情况下转向了 Cortex-M3(LM3Sxxx),  里面是大量的 8 位运算和个别的 16 位运算, 还有 IO 操作. 代码总长度增长了约 50%多. 后来有进行了一些优化(编译器的优化能力强了很多, 合理地改用局部变量, 使用 16位, 32 位运算), 代码又有些缩短.
根据以前的对比, 如果 Cortex-M3 与 AVR 比较, 我估计会得到更短的代码长度.
当然,  M3 和 M0 还是有些区别, 但估计区别不大.

使用特权

评论回复
6
HWM| | 2012-5-22 09:56 | 只看该作者
如果原来采用的8位系统中仅有8位操作,那转入16(或以上)后的代吗长度肯定增长明显。这也是8位系统还能存在的理由。

使用特权

评论回复
7
shizaigaole| | 2012-5-22 10:23 | 只看该作者
好像周立功那边的测试文档显示,

代码量和51差不多吧

使用特权

评论回复
8
shizaigaole| | 2012-5-22 10:29 | 只看该作者
和8bit AVR代码量对比

使用特权

评论回复
9
shizaigaole| | 2012-5-22 10:30 | 只看该作者
cormark 测试 M0的代码量比8 bit AVR 低49%

使用特权

评论回复
10
shizaigaole| | 2012-5-22 10:31 | 只看该作者

使用特权

评论回复
11
HWM| | 2012-5-22 10:54 | 只看该作者
这要看其处理信息的字长,否则毫无比较意义。

使用特权

评论回复
12
batsong| | 2012-5-22 11:24 | 只看该作者
直接买128K的,不纠结,哈哈

使用特权

评论回复
13
chenlubin1988|  楼主 | 2012-5-22 11:41 | 只看该作者
2# HWM
实现相同的功能,精简指令集要使用更多的语句。应该也有这方面的原因吧?

使用特权

评论回复
14
chenlubin1988|  楼主 | 2012-5-22 11:43 | 只看该作者
10# shizaigaole
是在什么条件下测试的?有相关的说明文档么?

使用特权

评论回复
15
shizaigaole| | 2012-5-22 11:54 | 只看该作者
这要看其处理信息的字长,否则毫无比较意义。
HWM 发表于 2012-5-22 10:54


coremark是一套测试微处理器的专用程序代码。
是标准,
远比个别人的个别程序具有代表性

使用特权

评论回复
16
HWM| | 2012-5-22 12:04 | 只看该作者
2# HWM  
实现相同的功能,精简指令集要使用更多的语句。应该也有这方面的原因吧?
chenlubin1988 发表于 2012-5-22 11:41

RISC,在某些情况下确实会多用些指令。

使用特权

评论回复
17
HWM| | 2012-5-22 12:08 | 只看该作者
coremark是一套测试微处理器的专用程序代码。
是标准,
远比个别人的个别程序具有代表性
shizaigaole 发表于 2012-5-22 11:54

不同应用完全不同,根本无标准可言。

使用特权

评论回复
18
chenlubin1988|  楼主 | 2012-5-22 12:24 | 只看该作者
5# airwill
问个问题:使用8bit的变量会增加代码量,因为MCU要进行32bit到8bit的转化么?

使用特权

评论回复
19
7120223| | 2012-5-22 13:35 | 只看该作者
楼上的问题我也想问下, 32位 是用32位,16位的好 还是  定义为8位的好呢,他们对其运算有什么影响么

使用特权

评论回复
20
airwill| | 2012-5-22 18:19 | 只看该作者
本帖最后由 airwill 于 2012-5-22 18:20 编辑

8 位变量, 强制为 32 变量运算, 然后再转为8位保存, 的确会导致 32位到8 位的变换指令.
我的做法是, 虽然只可能在 8 位范围内, 也当它 32 变量进行运算. 这样就不会增加指令, 而特别地, 多采用局部变量, 可以让代码比 8 位的缩短. 因为 8 位处理器读写 RAM 的指令也不短. 51 的 IDATA 和 PDATA 的操作就必定比 M0 费指令, 即使 DATA 区的变量操作指令, 在稍微复杂些的处理里, 变量在 ACC 里捣来捣去也蛮费指令的.

使用特权

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

本版积分规则

0

主题

52

帖子

1

粉丝