zoukankan      html  css  js  c++  java
  • 可执行文件的组成

    在 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 指定的位置。而这个装载过程由谁来完 成呢?由我们的启动程序来完成.

  • 相关阅读:
    POJ1222 EXTENDED LIGHTS OUT(熄灯问题)
    注解@AllArgsConstructor @NoArgsConstructor
    jwt
    校验手机号
    name* until
    java中valueof_JAVA String.valueOf()方法的用法说明(在JAVA中 BingDecime b1 = new BigDecimal(Double.toString)
    java 减法精度缺失_java double类型数据加减操作精度丢失解决方法
    java 中的Collection<? extends Object>c是什么意思
    mybatis <if test=""></if>标签0为null 无效的 踩坑
    JAVA8之妙用Optional解决判断Null为空的问题
  • 原文地址:https://www.cnblogs.com/niezhongle/p/11088596.html
Copyright © 2011-2022 走看看