可执行文件的组成

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


相关推荐

  • 探寻京东云核心竞争力的源泉「建议收藏」

    探寻京东云核心竞争力的源泉「建议收藏」云计算服务提供商的核心竞争力有哪些?除了技术、产品与服务之外,基础设施亦是不可忽视的一大因素。之所以会如此,是因为云计算是一个堪称“三高”的市场:高技术壁垒、高投资投入、高市场增长,云服务提供商需要保持长期投入,通过规模效应来实现成本优势,从而吸引更多用户采用其相关服务与产品。数据中心等基础设施的建设是云服务提供商实现持续成长的关键所在。数据不会骗人。根据咨询机构SynergyRese…

    2022年10月8日
    2
  • ajax复习

    ajax复习

    2022年3月13日
    47
  • ADRC自抗扰控制自学笔记(包含simulink仿真)(转载)

    ADRC自抗扰控制自学笔记(包含simulink仿真)(转载)摘自:https://blog.csdn.net/zouxu634866/article/details/106287879#comments_12978720ADRC自抗扰控制自学笔记(包含simulink仿真)总被蚊子叮的小旭2020-05-2217:59:361856收藏28分类专栏:控制版权ADRC控制中包含三个主要的部分:跟踪微分器,非线性状态反馈(非线性组合),扩张观测器。ADRC特点:继承了经典PID控制器的精华,对被控对…

    2022年5月19日
    81
  • pycharm代码灰色_pycharm中import是灰色的

    pycharm代码灰色_pycharm中import是灰色的问题描述不少新手在使用Pycharm时都遇到了这样的问题,import导入包的时候,比如importurllib,importos,写的时候还是彩色,一写完,一按回车,马上就变成了灰色。解决方案1、配置python解释器有误也就是说python找不到你的包,这种原因的解决方案可以参照我的另一篇文章。https://blog.csdn.net/Nire_Yeyu/article/de…

    2022年8月26日
    4
  • Android错误之ListView加载错位_ListView图片错位

    又遇到ListView加载item时,多个item中的图片会错位的情况现象如下图,同一个人的头像显示的乱七八糟找了一张图,很好地说明了问题的原因问题原因就在于convertView的重用,当重用 convertView 时,最初一屏显示 7 条记录, getView 被调用 7 次,创建了 7 个 convertView,当 Item1 划出屏幕, Item8 进入屏幕时,这时没有为 Item8

    2022年3月11日
    46
  • Linux学习——浅谈读写锁的使用

    Linux学习——浅谈读写锁的使用一、读写锁是什么?读写锁其实还是一种锁,是给一段临界区代码加锁,但是此加锁是在进行写操作的时候才会互斥,而在进行读的时候是可以共享的进行访问临界区的。读写锁和互斥量(互斥锁)很类似,是另一种线程同步机制,但不属于POSIX标准,可以用来同步同一进程中的各个线程。当然如果一个读写锁存放在多个进程共享的某个内存区中,那么还可以用来进行进程间的同步,读写锁的使用规则:只要没有写模式下的加锁,任…

    2022年8月12日
    6

发表回复

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

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