找回密码
 立即注册
楼主: DSL88

STC32G编译代码量比STC15F小很多

[复制链接]
  • 打卡等级:以坛为家III
  • 打卡总天数:727
  • 最近打卡:2025-12-17 06:47:18

24

主题

537

回帖

1585

积分

荣誉版主

积分
1585
发表于 2024-3-10 20:17:40 | 显示全部楼层
姚总误会了。
这是keil的问题。在1995年8031阶段,keil的c51已经基本成熟并广泛使用。
8031的data空间只有128个,8032才有256个。
RAM和EPROM均需要外置。而8031仅仅的128个data空间还要留出堆栈的空间。

所以KEIL的编译策略是:
在larger模式下,把所有变量放在XDATA中,临时变量和中间变量也放到xdata中。
而data空间只使用8个工作寄存器,这样就造成编译效率低下。

要包容这样的历史包袱就只能这样了。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:727
  • 最近打卡:2025-12-17 06:47:18

24

主题

537

回帖

1585

积分

荣誉版主

积分
1585
发表于 2024-3-10 20:37:06 | 显示全部楼层
keil c51的优秀仅仅体现在small模式。还要嵌入汇编。。。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:267
  • 最近打卡:2025-12-17 08:54:37

813

主题

1万

回帖

2万

积分

管理员

积分
21307
发表于 2024-3-10 20:37:31 | 显示全部楼层
8031 的 data, 是 128 + 128部分SFR
8031 的 idata, 是data的 128/idata



8032 的 data, 是 128 + 128部分SFR
8032 的 idata, 是data的 128/idata + 再增加的高 128 / idata
===idata 是 51/52 的堆栈


现在 STC32的堆栈理论是 64K/edata


回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:472
  • 最近打卡:2025-12-16 23:50:12
已绑定手机

14

主题

611

回帖

1240

积分

荣誉版主

积分
1240
发表于 2024-3-10 22:00:14 | 显示全部楼层
差别有这么大?还没有测试过.
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:567
  • 最近打卡:2025-12-17 11:14:23

4

主题

243

回帖

2516

积分

金牌会员

积分
2516
发表于 2024-3-11 11:41:45 | 显示全部楼层
这差距也太大了,感觉肯定哪里有点问题。

点评

STC32是 CISC 架构,268条强大的指令,当然空间代码效率高,复杂的大程序,大约高 15%, 这是先进性的体现  详情 回复 发表于 2024-3-11 13:16
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:267
  • 最近打卡:2025-12-17 08:54:37

813

主题

1万

回帖

2万

积分

管理员

积分
21307
发表于 2024-3-11 13:16:14 | 显示全部楼层
Snapd*** 发表于 2024-3-11 11:41
这差距也太大了,感觉肯定哪里有点问题。

STC32是强大的 CISC 架构,268条强大的指令,当然空间代码效率高
复杂的大程序,空间代码效率高大约高 15%, 这是先进性的体现


这是 【STC32 / 268条 强大指令】 PK 【STC8, 111条 8位指令】的
必然胜利
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:23
  • 最近打卡:2025-12-08 18:16:20

2

主题

216

回帖

1284

积分

金牌会员

积分
1284
发表于 2024-3-11 14:05:31 | 显示全部楼层
Snapd*** 发表于 2024-3-11 11:41
这差距也太大了,感觉肯定哪里有点问题。

很正常,同样的dhrystone程序,STC32G的代码量还不到STC8的一半
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:567
  • 最近打卡:2025-12-17 11:14:23

4

主题

243

回帖

2516

积分

金牌会员

积分
2516
发表于 2024-3-11 15:11:42 | 显示全部楼层
zxcv*** 发表于 2024-3-11 14:05
很正常,同样的dhrystone程序,STC32G的代码量还不到STC8的一半

我去,真的差距这么大呀。还没写过太大的程序,没碰到过。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2024-08-17 09:45:18

1

主题

13

回帖

117

积分

注册会员

积分
117
发表于 2024-6-21 21:24:25 | 显示全部楼层
本来想省点电量,把STC32程序移植到STC8H,没想到几十K的代码怎么也压缩不下来,原来如此
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:190
  • 最近打卡:2025-12-17 08:30:55
已绑定手机

19

主题

541

回帖

1917

积分

金牌会员

积分
1917
发表于 2024-11-8 11:24:09 | 显示全部楼层
社区*** 发表于 2024-3-10 19:23
这说明KEILC51在LARGER模式下编译结果非常非常垃圾!!!!!!!!!!!!!!!!!! ...

不要直接使用LARGE模式(此时变量默认定义在XDATA区,连局部变量也是,效率极低),要用小模式,,显示定义变量,大的不常用的变量定义在XDATA,251效率高是正常的,不然能叫251
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-12-17 14:54 , Processed in 0.121022 second(s), 97 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表