MDK平台 - Code, RO-data , RW-data, ZI-data详解


【全文大纲】 : https://blog.csdn.net/Engineer_LU/article/details/135149485


1 . 前言

MDK编译后,会列出Code, RO-data , RW-data, ZI-data,以下解析各段内容


2 . Code, RO-data , RW-data, ZI-data解析


  • Code : 顾名思义就是代码区域

  • RO-data(Read Only data) :是指常量数据, 程序编译下来把常量数据编译到RO-data区域,例如 const u16 ram = 5;

  • RW-data(Read Write data) :是指在定义时赋予了非0的初始值,那么程序编译下来,会在code区写入对应数据,程序段运行时再从code区拿出对应数据赋予到ram对应区域,实现上电初始非0值,例如 u16 ram = 5;

  • RI-data(Zero Initialie data) : 是指在定义时没有初始化或者初始化为0, 那么程序编译下来,ram1和ram2就会被认为在RI-data区域,例如 u16 ram1;u16 ram2 = 0;

3 . RAM上电复位

MDK编译时默认全ram复位,排除RW-data区域外,若不希望ram某个地址上电被复位,可通过勾选红框中NoInit,告诉编译器某段地址范围内不进行初始化段操作
在这里插入图片描述

4 . 细节扩展

另外编译结果还有堆和栈,MDK的堆和栈是自底向上的,与KeilC51反过来,KeilC51是自顶向下,内存排布有关各区域的描述这里尽量保持简洁风格描述

5 . 总结

编译程序知道编译后存放的区域有助于理解编译器的行为,从而使我们知道怎样可以做到更好,并且有更多的思路去开发,文章内容保持简洁风格,通俗易懂,谢谢观看。

技术交流群 : 745662457
群内专注 - 问题答疑,技术研究

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客 - L U

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值