ARM程序的镜像文件以及在内存中的分区
来源:互联网 发布:python 连接sap 编辑:程序博客网 时间:2024/04/29 22:25
最近在对程序的编译和运行机制比较感兴趣,总结了一些关于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、程序代码区--存放函数的二进制代码。
阅读全文
0 0
- ARM程序的镜像文件以及在内存中的分区
- C程序在内存中的分区情况
- 堆、栈在内存中的存储以及程序调用
- 程序在内存中的分布
- 程序在内存中的分布
- 程序在内存中的分布
- 程序在内存中的分布
- 程序在内存中的存放
- 程序在内存中的分布
- 程序在内存中的分布
- 程序在内存中的分布
- 程序在内存中的分布
- 程序在内存中的分布
- 程序在内存中的分布
- 程序在内存中的分布
- 程序在内存中的分布
- 程序在内存中的分布
- 程序在内存中的分布
- insert into on DUPLICATE KEY UPDATE使用
- 庆祝博客开通,这是个良好的开端,哈哈哈哈!
- IIS安装报错:使用了托管处理程序,但是未安装或未完整安装 ASP.NET
- MySQL 入门常用命令大全(上)
- 计算机视觉caffe之路附1:Ubuntu+Opencv+Caffe开发深度学习常见错误及经验
- ARM程序的镜像文件以及在内存中的分区
- cocos2dx的hello world C++工程转到android studio上继续开发
- java中Atomic类之AtomicLong
- Eclipse使用码云上传代码和下载代码
- 数据的地理配准
- Python 批量下载验证码图片及切割验证码图片,识别验证码,并以识别的文字重命令验证码
- JAVA 基础语法(六)——方法(函数)
- 宽带密码忘了怎么办?ADSL宽带账号密码找回教学
- Selenium使用Xpath定位元素及实例(2)