独闷闷网

标题: C51编译后Code,RO-data,RW-data,ZI-data分别代表什么意思?已解答。 [打印本页]

作者: jianhong_wu    时间: 2014-12-8 20:02
标题: C51编译后Code,RO-data,RW-data,ZI-data分别代表什么意思?已解答。
伟-肇庆:
看编译代码内存多大,数据占内存多大,看编译器编译,如下图:


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

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

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

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

伟-肇庆:
字节。以下这句话不对。

ZERO-ININ 是指初始化为零或者没有初始化默认为零的全局变量。存放在BSS段。ZERO-ININ打多了,是ZERO init的缩写。

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

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

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



作者: as2807479    时间: 2014-12-8 20:05
赞个!!!!!




欢迎光临 独闷闷网 (http://www.dumenmen.com/) Powered by Discuz! X3.2