可执行文件的组成

可执行文件的组成在ADS下,可执行文件有两种,一种是.axf文件,带有调试信息,可供AXD调试工具使用.另一种是.bin文件,可执行的二进制代码文件。我们重点是讲描.bin文件的组成。我们把可执行文件

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

 

在 ADS 下,可执行文件有两种,一种是.axf 文件,带有调试信息,可供 AXD 调试工具使用.另一种是.bin

文件,可执行的二进制代码文件。我们重点是讲描.bin 文件的组成。 我们把可执行文件分为两种情况:分别为存放态和运行态。

1. 存放态

存放态是指可执行文件通过 fromelf 产生后,在存储介质(flash 或磁盘)上的分布. 此时可执行文件一 般由两部分组成:分别是代码段和数据段。代码段又分为可执行代码段(.text)和只读数据段(.rodata), 数据段又分为初始化数据段(.data)和未初始化数据段(.bss)。可执行文件的存放态如下:

+————-+———–

|   .bss      |

+————-+– 数据段

|   .data     |

+————-+———–

|   .rodata   |

|             | 代码段

|   .text     |

+————-+———–

 

2. 运行态

可执行文件通过装载过程, 搬入到 RAM 中运行, 这时候可执行文件就变成运行态。在 ADS 下对可执行代 码各段有另一个名称:

|    …      |

+————-+———–

|   .bss      | ZI 段

+————-+– 数据段

 

|   .data     | RW 段

+————-+———–

|   .rodata   |

|             | 代码段(RO 段)

|   .text     |

+————-+———–

|    …      |

装载前

 

当可执行文件装载后, 在 RAM 中的分布如下:

 

|    …      |

+————-+– ZI 段结束地址

|    ZI 段     |

+————-+– ZI 段起始地址

|    保留区 2   |

+————-+– RW 段结束地址

|    RW 段     |

+————-+– RW 段起始地址

|   保留区 1    |

+————-+– RO 段结束地址

|    RO 段     |

+————-+– RO 段起始地址

|    …      |

装载后

 

所以装载过程必须完成把执行文件的各个段从存储介质上搬到 RAM 指定的位置。而这个装载过程由谁来完 成呢?由我们的启动程序来完成.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/167419.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python3对多股票的投资组合进行分析「建议收藏」

    Python3对多股票的投资组合进行分析「建议收藏」目录概述:一、股票数据准备1、股票选择2、获取每支股票的收盘价3、计算股票的日收益率二、投资组合的收益计算1、给定权重的投资组合2、等权重的投资组合3、市值加权的投资组合三、投资组合的相关性分析1、投资组合的相关矩阵2、投资组合的协方差矩阵3、投资组合的标准差四、探索股票的最优投资组合1、使用蒙特卡洛模拟Markowitz模型2、投资…

    2022年9月1日
  • redis:Could not connect to Redis at 127.0.0.1:6379: Connection refused错误解析「建议收藏」

    redis:Could not connect to Redis at 127.0.0.1:6379: Connection refused错误解析「建议收藏」1.错误信息思考:根据错误信息的字面意思,可以知道,redis-cli客户端程序,通过ip127.0.0.1,端口6379与redis服务器建立连接失败。说明当我们调用redis-cli时,默认是用本地回环地址去与服务器端建立连接。2.解决问题思路:服务器程序会在监听一个套接字(IP+端口号),等待客户端的连接。一般运行服务器程序的时候,都会加载一个配置文件。redis服务器也会读取一个配置文件。如果不知道配置文件在哪里,可以使用:whichredis.conf#或者whe

    2022年5月2日
  • linux中文件重命名_如何在Linux中重命名文件?

    linux中文件重命名_如何在Linux中重命名文件?linux中文件重命名ThistutorialwillwalkyouthroughthesimplestepstorenameafileinLinux.本教程将引导您完成在Linux中重命名文件的简单步骤。It’sgoingtobeaverysimpleandstraightforwardtutorialevenifyouareabe…

    2022年9月11日
  • 做网站-Http状态码详解

    做网站-Http状态码详解

    2021年10月30日
  • coolfire黑客入门教程系列之(八)最后部分!

    coolfire黑客入门教程系列之(八)最后部分!作者glayjun@2005-06-0309:46:25我将coolfire黑客入门教程系列之(八)这篇教程为开了三部分!!这是最后的部分!!不要再问我coolfire是谁啊!!!呵呵!!我怕!!林正隆,中国台湾著名黑客,中国黑客领军人物。2011年获得COG信息安全终身成就奖林正隆-百度百科说明:本系列文章是整理Coolfire的8篇黑客入门文章,因在浏览网上相关文章的时候,要…

    2022年5月31日
  • 排序算法:快速排序

    排序算法:快速排序概述手写排序算法几乎是程序员面试必问的题目,大多数人都会选择写冒泡排序,如果此时你写的是其他改进过的排序算法,相信会让面试官眼前一亮。本文将介绍常见的排序算法中的“快速排序”。基本思想快速排序(QuickSort)是对冒泡排序的一种改进。快速排序由C.A.R.Hoare在1962年提出。它的基本思想是:从要排序的数据中取一个数为“基准数”。 通过一趟排序将要排序的数据…

    2022年7月26日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号