可执行文件的组成

可执行文件的组成在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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • MySQL在大数据Limit使用[通俗易懂]

    MySQL在大数据Limit使用

    2022年1月17日
    52
  • 源码分析ElasticJob分片机制(带分片机制流程图)

    源码分析ElasticJob分片机制(带分片机制流程图)本文将重点分析ElasticJob的分片机制:ElasticJob分片工作机制:1、ElasticJob在启动时,首先会启动是否需要重新分片的监听器。代码见:ListenerManager#startAllListeners{…;shardingListenerManager.start();…}。2、任务执行之前需要获取分片信息,如果需要重新分片,主服务器执行分片算法,其他从…

    2025年7月3日
    4
  • JAVA的网络编程基础概念建议收藏

    网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯。网络编程中有两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。在TCP/IP协

    2021年12月20日
    42
  • 详述如何退出 Vim 编辑器

    详述如何退出 Vim 编辑器Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,其在Vi的基础上改进和增加了很多特性。怎么说呢?学习如何用Vim进行文本编辑应该算是程序员的必备技能之一啦!But,很多同学在使用Vim进行文本编辑的时候却不知道如何退出Vim编辑器,这就有些尴尬啦!因此,在本文中,详细列出如何Vim编辑器的方法,希望对大家有些帮助。首先,点击Esc键,Vim进入命令模式。然

    2022年6月7日
    40
  • 苹果绕id工具_绕ID教程(iOS13.313.3.1)[通俗易懂]

    苹果绕id工具_绕ID教程(iOS13.313.3.1)[通俗易懂]前几期,我已经第一时间将绕ID教程给我的粉丝奉上,当然我也会一直做这个事情,由于越狱软件的不支持,所以导致iOS13.3以上是不能成功绕过ID锁的,所以今天给大家上一个适合iOS13.3,以及13.3.1。这个教程不如前一个教程那么简单,可能小白用起来会有些困难,但我依然致力于尽量简洁明白的说给大家听,一步步作你就会成功。一、越狱(苹果系统下完成):手机越狱工具Checkra1n0.9….

    2022年4月19日
    2.5K
  • Java安全之RMI反序列化

    Java安全之RMI反序列化

    2020年11月20日
    182

发表回复

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

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