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

STC32G编译代码量比STC15F小很多

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:513
  • 最近打卡:2025-05-01 04:31:49

24

主题

515

回帖

986

积分

荣誉版主

积分
986
发表于 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个工作寄存器,这样就造成编译效率低下。

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:513
  • 最近打卡:2025-05-01 04:31:49

24

主题

515

回帖

986

积分

荣誉版主

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

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15613
发表于 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


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:338
  • 最近打卡:2025-04-25 16:31:21
已绑定手机

14

主题

600

回帖

2199

积分

荣誉版主

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:338
  • 最近打卡:2025-05-01 00:00:50

4

主题

242

回帖

1287

积分

金牌会员

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

点评

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

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

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

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


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

使用道具 举报 送花

2

主题

185

回帖

1048

积分

金牌会员

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

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:338
  • 最近打卡:2025-05-01 00:00:50

4

主题

242

回帖

1287

积分

金牌会员

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

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

使用道具 举报 送花

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

1

主题

14

回帖

117

积分

注册会员

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

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-29 08:28:25
已绑定手机

17

主题

446

回帖

1173

积分

金牌会员

积分
1173
发表于 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-5-2 02:56 , Processed in 0.130880 second(s), 123 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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