用AI8051U编译的简单工程,占用代码的疑问
用AI8051U编译的简单工程,占用代码的大小,一直没有弄明白,截图中是我写了两个语句,编译后提示“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编译器整了好久,也没搞懂事那个环节出问题了
反编译一下就知道使用了什么指令 就这两行代码,编译出798字节代码。
代码中未写,却显示引用了stdio.h和intrins.h。
在stc8051.h里面写代码了? REMOVEUNUSED问题第二弹 - 问题反馈:ISP软件/头文件/单片机数据手册规格书等 国芯人工智能技术交流网站 - AI32位8051交流社区
想不到一个容量问题还引出了这么多关于C251的BUG出来了,
我想回到C51,但C251能支持的芯片太香了。
希望强大的国芯工程师们能研发一个自己的编译器!强烈支持!
页:
[1]