【IoT】STM32 编译结果 map 之 code、RO-data、RW-data、ZI-data 字段解析

本文介绍了STM32程序编译后的map文件中code、RO-data、RW-data和ZI-data四个关键字段的含义。code包含机器指令,存储在ROM;RO-data为只读数据,存储在ROM;RW-data和ZI-data是可读写数据,区别在于初始值,两者均位于RAM,程序运行时可修改。ZI-data包括栈和堆空间,初始值为0。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、Code

即代码域,它指的是编译器生成的机器指令,这些内容被存储到ROM区。

2、RO-data

Read Only data,即只读数据域,它指程序中用到的只读数据,这些数据被存储在ROM区,因而程序不能修改其内容。

例如:

C语言中const关键字定义的变量就是典型的RO-data。

3、RW-data

Read Write data,即可读写数据域,它指初始化为“非0值”的可读写数据,程序刚运行时,这些数据具有非0的初始值,且运行的时候它们会常驻在RAM区,因而应用程序可以修改其内容。

例如:

C语言中使用定义的全局变量,且定义时赋予“非0值”给该变量进行初始化。

4、ZI-data

Zero Initialie data,即0初始化数据,它指初始化为“0值”的可读写数据域,它与RW-data的区别是程序刚运行时这些数据初始值全都为0,而后续运行过程与RW-data的性质一样,它们也常驻在RAM区,因而应用程序可以更改其内容。

例如:

C语言中使用定义的全局变量,且定义时赋予“0值”给该变量进行初始化.。

若定义该变量时没有赋予初始值,编译器会把它当ZI-data来对待,初始化为0。

ZI-data的栈空间(Stack)及堆空间(Heap):

在C语言中,函数内部定义的局部变量属于栈空间,进入函数的时候从向栈空间申请内存给局部变量,退出时释放局部变量,归还内存空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

产品人卫朋

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

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

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

打赏作者

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

抵扣说明:

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

余额充值