独闷闷网

 找回密码
 立即注册
搜索
查看: 5746|回复: 1
收起左侧

[原创] C51编译后Code,RO-data,RW-data,ZI-data分别代表什么意思?已解答。

[复制链接]
发表于 2014-12-8 20:02:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
伟-肇庆:
看编译代码内存多大,数据占内存多大,看编译器编译,如下图:
1.jpg

預腾--上海:
从左 到右   依次是什么意思?

伟-肇庆:
一个是代码量。一个是常数。一个是初始化的全局变量。一个是初始化为零或者没初始化为的全局变量

Tony--青岛:
//Code为程序代码部分
//RO-data 表示 程序定义的常量const temp;
//RW-data 表示 已初始化的全局变量
//ZI-data 表示 未初始化的全局变量
//Program Size: Code="18248" RO-data=320 RW-data=260 ZI-data=3952

預腾--上海:
单位是什么?      

伟-肇庆:
字节。以下这句话不对。
2.jpg
ZERO-ININ 是指初始化为零或者没有初始化默认为零的全局变量。存放在BSS段。ZERO-ININ打多了,是ZERO init的缩写。

鸿哥-深圳:
ZI-data如果这个包含初始化为0的全局变量,那么会不会跟RW-data有重复?

伟-肇庆:
RW是初始化为不为零的全局变量。初始化为零或者默认为零的全局变量和静态变量存放在数据BSS段。系统启动之前把BSS段连续一片内存清理。作为上面所说的全局变量的内存。

伟-肇庆:
MDK编译时没有局部变量提示的。因为STM32架构的局部变量是在栈分配的。调用函数时才会为其分配内存。而51编译器不一样,51编译之前局部变量内存和全局变量在运行之前是指定明确的,你们看的编译的数据量所占的内存是全部变量与局部变量的总和。关于这一点,大家有空去看一篇博客,我记得是“函数的重入与不可重入,及模拟栈的实现”,就是讲内存的问题。我记得那篇是51和STM32都有讲的。


乐于分享,勇于质疑!
发表于 2014-12-8 20:05:50 | 显示全部楼层
赞个!!!!!
乐于分享,勇于质疑!
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|独闷闷网 ( 粤ICP备12007667号-2 )

GMT+8, 2024-12-4 13:59 , Processed in 0.733365 second(s), 20 queries .

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