加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

关于ARM中程序的zi,rw,ro段的解析

发布时间:2020-12-15 06:49:12 所属栏目:百科 来源:网络整理
导读:? 一直以来对于ARM体系中所描述的RO,RW和ZI数据存在似是而非的理解,这段时间对其仔细了解了一番,发现了一些规律,理解了一些以前书本上有的但是不理解的东西,我想应该有不少人也有和我同样的困惑,因此将我的一些关于RO,RW和ZI的理解写出来,希望能对大
?

一直以来对于ARM体系中所描述的RO,RW和ZI数据存在似是而非的理解,这段时间对其仔细了解了一番,发现了一些规律,理解了一些以前书本上有的但是不理解的东西,我想应该有不少人也有和我同样的困惑,因此将我的一些关于RO,RW和ZI的理解写出来,希望能对大家有所帮助。
??????????? 要了解RO,RW和ZI需要首先了解以下知识:
??????????? ARM程序的组成
??????????? 此处所说的“ARM程序”是指在ARM系统中正在执行的程序,而非保存在ROM中的bin映像(image)文件,这一点清注意区别。
??????????? 一个ARM程序包含3部分:RO,RW和ZI
??????????? RO是程序中的指令和常量
??????????? RW是程序中的已初始化变量
??????????? ZI是程序中的未初始化的变量
??????????? 由以上3点说明可以理解为:
??????????? RO就是readonly,
??????????? RW就是read/write,
??????????? ZI就是zero
??????????? ARM映像文件的组成
??????????? 所谓ARM映像文件就是指烧录到ROM中的bin文件,也成为image文件。以下用Image文件来称呼它。
??????????? Image文件包含了RO和RW数据。
??????????? 之所以Image文件不包含ZI数据,是因为ZI数据都是0,没必要包含,只要程序运行之前将ZI数据所在的区域一律清零即可。包含进去反而浪费存储空间。
??????????? Q:为什么Image中必须包含RO和RW?
??????????? A:因为RO中的指令和常量以及RW中初始化过的变量是不能像ZI那样“无中生有”的。
??????????? ARM程序的执行过程
??????????? 从以上两点可以知道,烧录到ROM中的image文件与实际运行时的ARM程序之间并不是完全一样的。因此就有必要了解ARM程序是如何从ROM中的image到达实际运行状态的。
??????????? 实际上,RO中的指令至少应该有这样的功能:
??????????? 1. 将RW从ROM中搬到RAM中,因为RW是变量,变量不能存在ROM中。
??????????? 2. 将ZI所在的RAM区域全部清零,因为ZI区域并不在Image中,所以需要程序根据编译器给出的ZI地址及大小来将相应得RAM区域清零。ZI中也是变量,同理:变量不能存在ROM中
????????

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读