历史上的今天
今天是:2025年02月09日(星期日)
2021年02月09日 | STM32 编译结果 map 之 code、RO-data、RW-data、ZI-data 字段解析
2021-02-09 来源:eefocus
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语言中,函数内部定义的局部变量属于栈空间,进入函数的时候从向栈空间申请内存给局部变量,退出时释放局部变量,归还内存空间。
而使用malloc动态分配的变量属于堆空间。在程序中的栈空间和堆空间都是属于ZI-data区域的,这些空间都会被初始值化为0值。
编译器给出的ZI-data占用的空间值中包含了堆栈的大小(经实际测试,若程序中完全没有使用malloc动态申请堆空间,编译器会优化,不把堆空间计算在内)。
史海拾趣
|
毕博管理咨询经理 汪鑫 我国政府先后在不同场合承诺将于2008年北京奥运会期间提供3G服务。信息产业部 有关领导最近也在不同场合明确表示,2006年政府发放3G牌照的时机已经成熟。据此,2006年应是我国3G的开局之年,根据我国目前运营商的现状, ...… 查看全部问答> |
|
当我们还在为怎么学arm烦恼时,其实在51中也包含着嵌入式的基础---51的实时操作系统,在一个程序要求越来越强的时候,我们要求程序的效率也越来越高,而要体现出这个现实的话也只有操作系统!其实操作系统我们随处可见,我们现在用的windows等等, ...… 查看全部问答> |
|
各位老大 这个问题很菜,在控件上用了Gruopbox以后,Gruopbox里包含的控件都不能显示了,比如按钮之类的,这是啥原因啊?去掉Gruopbox就可以了,请各位指教!… 查看全部问答> |
|
国产PLC有免费试用啦 应广大用户需求,广州微嵌最近推出PLC产品免费试用优惠,只要你有需求,我们可以满足你的要求. 分别有WQ-32MT-2DA和WQ-36MT-3DA两种型号. 产品特点 ● WQ-32MT-2DA/WQ-36MT-3DA 是完全自主研发的国产精品,具 ...… 查看全部问答> |
|
嵌入式linux中关于485串口方向的控制问题: 对于485串口来讲,在默认的方式下是处于A和B电平持平是接受状态,当要发送数据的时候,首先要通过CPU置位操作拉高电平(拉高电平的目的就是为了写操作),然后再写数据,可是会出现这样的情况:由于CPU ...… 查看全部问答> |
|
调频式串联谐振高压试验设备的工作原理接线如图1所示。交流220V或380V电源,由变频源转换成频率、电压可调的电源,经励磁变压器,送入由电抗器L和被试电缆Cx构成的高压串联谐振回路,分压器是纯电容式的,用来测量试验电压。变频器经励磁变压器T向 ...… 查看全部问答> |




