ARM程序的镜像文件以及在内存中的分区
最近在对程序的编译和运行机制比较感兴趣,总结了一些关于ARM生成的镜像文件和在内存中的内容,同时还有一些疑问,欢迎大家指教。 首先,程序主要有以下三部分组成: RO:指程序的指令和常量(我们的代码编译后生成的是机器指令) RW:指程序中已经初始化的变量 ZI:程序中未初始化的变量 现在我们知道了程序的是由这三部分组成的,那我们生产的镜像文件(bin)又包含什么呢? 镜像文件指的是烧录到flash中的文件只包含RO和RW部分,ZI不包含在其内。之所以image中不包含ZI,是因为ZI全部都是0,内有必要包含,只要在程序运行之前,在内存中将ZI区域的值全部清零即可,包含在flash中反而浪费空间。而RW是初始化过得 变量,这些数值不可能无中生有,所以flash中必须包含。 下面是一个我编译后的map文件截图: 可以看出统计结果: code和RO size是RO RAM包含了:RW data和 ZI data ROM包含了:code + RW + RO 程序的执行过程:将RW搬运到程序的RAM区,将ZI所在的RAM区全部清零,完成这两项工作后,程序才能正常访问变量,然后CPU从flash中取指令,执行程序。 一个程序编译后占用的内存分以下几个部分: 1、栈区(stack)--用于存放函数的参数,局部变量等。 2、堆区(heap)--由程序员来分配和释放的内存。 3、全局区、静态区--包含初始化和未初始化的全局变量和静态变量。 4、常量区--存放字符串等常量。 5、程序代码区--存放函数的二进制代码。
ARM程序的镜像文件以及在内存中的分区相关推荐
- Linux内存中加载二进制,linux – 程序退出后二进制文件会留在内存中吗?
我知道程序首次启动时,由于代码不在内存中,因此在开始时会出现大量页面错误,因此需要从磁盘加载代码. 程序退出后会发生什么?二进制文件是否留在内存中?该程序的后续调用是否会发现代码已经在内存中,因此没有 ...
- python生成epub文件_python在内存中生成Zip文件!
import zipfile import StringIO class MemoryZipFile(object): def __init__(self): #创建内存文件 self._memory ...
- 阿里云Raw镜像文件如何在VMware中打开
作者:王少辉 链接:http://www.kumb.cn/blog/21.html 阿里云ECS服务器镜像文件是可以下载下来在本地做测试的,首先要在阿里云提交工单,申请"镜像导出" ...
- linux 内存日志,性能优化:使用ramlog将日志文件转移到内存中
Ramlog 以系统守护进程的形式运行.在系统启动时它创建虚拟磁盘(ramdisk),将 /var/log 下的文件复制到虚拟磁盘中,同时把虚拟磁盘挂载为/var/log.然后所有的日志就会更新到虚拟 ...
- linux内存迁移,性能优化:使用Ramlog将日志文件转移到内存中
Ramlog 以系统守护进程的形式运行.在系统启动时它创建虚拟磁盘(ramdisk),将 /var/log 下的文件复制到虚拟磁盘中,同时把虚拟磁盘挂载为/var/log.然后所有的日志就会更新到虚拟 ...
- c语言中读取内存的文件,c++从内存中读取文件内容,内容写到内存 实现文件的内存共享代码实例...
使用c++代码进行内存共享操作,内存共享可以通过key value的形式来保存内存,后面可以使用key值来直接读取内存,效率会很高/ 函数说明: shmget(key_t key, size_t si ...
- android+5+镜像,msm8909+android5.1分区及烧录的镜像文件介绍
msm8909+android5.1分区及烧录的镜像文件介绍 发布时间:2017-6-29 14:48:37 编辑:www.fx114.net 分享查询网 本篇文章主要介绍了"msm8909 ...
- msm8909+android5.1分区及烧录的镜像文件介绍【转】
本文转载自: EMMC的分区及其保存的文件 Partition label filename 说明 PrimaryGPT gpt_main0.bin modem NON-HLOS.bin sbl1 s ...
- 基于WINCE6.0下载multiple XIP镜像文件
********************************LoongEmbedded******************************** 作者:LoongEmbedded(kandi ...
最新文章
- oracle视图能增删改,oracle视图的增删改
- 微信后端服务架构及其过载控制系统DAGOR
- document怎么取得日期选择框的值_一次性取得跨年度的租金收入如何进行财税处理?...
- php中隐藏和展开文章,手机端第一屏页面文章的展开和隐藏_html/css_WEB-ITnose
- 【NLP】四万字全面详解 | 深度学习中的注意力机制(三)
- Scala可变参数列表,命名参数和参数缺省
- plan explorer mysql_plan explorer支持oracle吗
- mysql数据库的三级模式_2016年计算机三级MySQL数据库试题
- latex在overleaf可以成功编译运行,没有错误,但是上传到springer期刊的时候总是出现错误?
- nginx 常用命令整理
- 腾讯公布5G开放平台全景图,定义12大场景,引入45个应用
- android 缩放组件,Android控件之ZoomControls缩放控件
- C# BackgroundWorker组件学习
- 高颜值智能存储 华三魔术家M2无线云盘评测
- GPRS DTU是什么?其工作原理是什么? (转自aerkate)
- python发送邮件 退回_【破案了】python发邮件问题,求助!为什么总被退回?
- 一个简单移动页面ionic打包成app
- Linus最高产,2021 Linux内核开发统计出炉
- Cookie和Session的作用,区别和各自的应用范围,cookie、Session工作原理
- 基于位置的 AR 应用程序开发最完整指南