找回密码
 立即注册
查看: 211|回复: 5

用AI8051U编译的简单工程,占用代码的疑问

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:457
  • 最近打卡:2026-03-23 00:07:15
已绑定手机

6

主题

105

回帖

2268

积分

金牌会员

积分
2268
发表于 2025-12-27 22:13:08 | 显示全部楼层 |阅读模式
用AI8051U编译的简单工程,占用代码的大小,一直没有弄明白,截图中是我写了两个语句,
001.png
编译后提示“Program Size: data=25.0 edata+hdata=256 xdata=0 const=6 code=798”,
百度出来是这样的:
各参数含义如下:
  • code=816‌:表示程序代码(Code)段大小为816字节,存放CPU指令,通常存储在Flash中,其大小直接反映程序逻辑的复杂度。
  • const=6‌:指只读数据(RO-data)段大小为6字节,包含程序中的常量数据(如const变量、字符串字面量),这些数据在运行时不可修改,也存于Flash中。
  • data=25.0‌:通常代表已初始化读写数据(RW-data)段大小为25.0字节,存放已初始化且可能被修改的全局或静态变量,这部分数据在程序启动时需从Flash复制到RAM中。
  • xdata=0‌:可能表示外部数据或特殊内存区域(如外部RAM)中的数据段大小为0字节,若系统无外部内存则此项可忽略。
  • edata+hdata=256‌:可能指零初始化数据(ZI-data)段大小为256字节,包含未初始化或初始化为零的全局变量,运行时在RAM中分配并清零,是RAM占用的主要部分之一。‌1
内存占用计算与影响:‌ Flash总占用为code + const + data = 816 + 6 + 25.0 = 847字节,需确保单片机Flash容量大于此值;RAM总占用为data + edata+hdata(即RW-data + ZI-data)= 25.0 + 256 = 281字节,
需满足单片机RAM容量要求。若ZI-data过大(如256字节),可能增加启动时间或导致RAM溢出,需优化全局变量使用。‌

因为这是采用AI8051U_32bit指令编写的,而采用AI8051U8bit指令编写,比这个还多几个语句,编译提示“Program Size: data=11.0 xdata=0 code=63”,这差距实在是有点大,按着keil编译器整了好久,也没搞懂事那个环节出问题了


回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:745
  • 最近打卡:2026-03-23 00:00:20
已绑定手机

19

主题

3337

回帖

6925

积分

论坛元老

积分
6925
发表于 2025-12-27 23:00:53 | 显示全部楼层
反编译一下就知道使用了什么指令
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:179
  • 最近打卡:2026-03-23 00:27:58

25

主题

231

回帖

2061

积分

金牌会员

积分
2061
发表于 2025-12-28 00:09:45 | 显示全部楼层
就这两行代码,编译出798字节代码。
代码中未写,却显示引用了stdio.h和intrins.h。

在stc8051.h里面写代码了?
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:483
  • 最近打卡:2026-03-23 08:55:58
已绑定手机

104

主题

4195

回帖

9307

积分

荣誉版主

无情的代码机器

积分
9307
发表于 2025-12-28 00:20:57 | 显示全部楼层
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:457
  • 最近打卡:2026-03-23 00:07:15
已绑定手机

6

主题

105

回帖

2268

积分

金牌会员

积分
2268
发表于 2025-12-28 16:54:37 | 显示全部楼层
想不到一个容量问题还引出了这么多关于C251的BUG出来了,
我想回到C51,但C251能支持的芯片太香了。

希望强大的国芯工程师们能研发一个自己的编译器!强烈支持!
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-3-23 23:09 , Processed in 0.112840 second(s), 71 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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