gpt4 book ai didi

linker - elf 文件中段的虚拟和物理地址

转载 作者:行者123 更新时间:2023-12-04 02:06:09 33 4
gpt4 key购买 nike

objdump 如何计算 elf 部分的物理地址 (LMA)?据我所知,elf 节头仅包含节 [1] 的虚拟地址 (VMA)。

通常,VMA 和 LMA 是相同的。但是对于初始化数据段 (.data),VMA 是变量的 RAM 位置,LMA 是初始值所在的 ROM 位置。 Crt0 负责在调用 main() 之前将初始值复制到 RAM 中。例如:

$ objdump -h my.elf
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 0003c3d0 00080000 00080000 00010000 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
5 .data 000008d0 40000000 000d08d4 00060000 2**3
CONTENTS, ALLOC, LOAD, DATA

-汤姆

[1] http://www.ouah.org/RevEng/x430.htm

最佳答案

查找有关 LMA 的信息:
http://www-zeuthen.desy.de/dv/documentation/unixguide/infohtml/binutils/docs/ld/Basic-Script-Concepts.html#Basic-Script-Concepts

重要的是:

每个可加载或可分配的输出部分都有两个地址。第一个是 VMA,即虚拟内存地址。这是运行输出文件时该部分将具有的地址。第二个是 LMA,或加载内存地址。这是将加载该部分的地址。在大多数情况下,这两个地址是相同的。它们可能不同的一个例子是当一个数据部分被加载到 ROM 中,然后在程序启动时复制到 RAM 中(这种技术通常用于初始化基于 ROM 的系统中的全局变量)。在这种情况下,ROM 地址将是 LMA,RAM 地址将是 VMA

关于linker - elf 文件中段的虚拟和物理地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6218384/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com