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都有讲的。
赞个!!!!!
页:
[1]