MDK Keil编译中CODE-RO-RW-ZI Data -堆栈(全网最全解析)

程序的组成、存储与运行

1、CODE、RO、 RW、 ZI Data 域及堆栈空间

相信大家使用keil做单片机开发的时候,编译成功之后,会出现program size,像我这里就是Program Size: Code=10294 RO-data=8178 RW-data=60 ZI-data=3676 那这些变量的含义都是一些什么呢,他们在程序运行的时候都起什么作用呢?在这里插入图片描述这里我使用的是muc为STM32F407VET6。这里说明一点这些值的大小都是字节。以字节为单位。

1-1、Code

这个工程所需要的代码域,把工程所有的.c文件.h文件所需要的文件才会编译。同时 这个还与编译的优化等级有关系,编译器选择不同编译器生成的机器指令,这些内容被存储到 ROM 区,ROM就是MCU的flash。掉电不会丢失。
当在option中的c/c++选项之中选择编译优化等级
选择 level-0 时候对应的Program Size如下
在这里插入图片描述
在这里插入图片描述选择 level-1 时候对应的Program Size如下

在这里插入图片描述
在这里插入图片描述
可以看出来CODE变化比较明显,是因为编译器优化了很多工程所不需要的文件,甚至文件中没有调用的函数都可能会被优化,同时RO、RW、 ZI Data 都有相应的减少。 一般情况下我们选择的优化等级是level-1。

1-2、RO-data

Read Only data,即只读数据域,它指程序中用到的只读数据,这些数据被存储在ROM 区,因而程序不能修改其内容。C 语言中 const 关键字定义的变量就是典型的RO-data。只要是const修饰都纳入,不管是局部还是全局变量

const uint8_t buf[1024] = {
   
   1,1,1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值