代码之家  ›  专栏  ›  技术社区  ›  Aimal

Elf十六进制表示法

  •  1
  • Aimal  · 技术社区  · 7 年前

    understand hexedit of an elf 为了将编译器输出刻录到ROM,需要。out文件被转换为十六进制(例如intel十六进制)。我想知道以下信息是如何以十六进制格式保存的:

    1. 节标题
    2. 如果这些文件保存在十六进制文件中,如何从十六进制文件中读取?
    2 回复  |  直到 7 年前
        1
  •  3
  •   Lundin    7 年前

    这些都没有保存下来。十六进制文件仅包含原始程序和数据。 https://en.wikipedia.org/wiki/Intel_HEX

    微控制器不知道在哪里。数据和。基站是定位的——它甚至不知道它们的存在。之前执行的启动代码 main()

        2
  •  3
  •   Clifford    7 年前

    点1到3中的元素不包括在原始二进制中,因为它们在应用中没有任何用途;相反,它们被开发主机上的链接器和调试器使用,对于程序执行来说是不必要的,因为您只需要字节值和写入它们的地址,这或多或少是十六进制文件包含的所有内容(也可能包含开始地址记录)。

    具有动态链接或自托管调试功能的系统(例如VxWorks)使用对象文件。

    关于第5点,微控制器不需要知道;链接器在解析目标代码中的绝对和相对地址时使用该信息。一旦完全解析(链接),地址将直接嵌入代码中。同样,在使用动态加载/链接的情况下,需要对象文件元数据,此类系统通常不会加载原始十六进制文件或二进制文件。