gpt4 book ai didi

c - 在与 ARM 架构兼容的 ELF 文件中查找 C 结构的地址

转载 作者:太空宇宙 更新时间:2023-11-04 02:54:23 25 4
gpt4 key购买 nike

在我的项目中,我定义了:(这不是真正的代码 - 用于抽象目的)

typedef struct {
...
} my_struct;

在一些 C 文件中我声明:

my_struct my_struct_inst;

在其他 2 个 C 文件中,我通过声明使用了该结构:

extern my_struct my_struct_inst;

并使用它的内容。

我使用 RVCT2.2 将该代码编译为 ARM 并试图找到该结构的地址:

1) 内存何时分配给 my_struct_inst?在编译时间?在运行时?

2) 在反汇编中,我可以看到在 .FLASH_RAM 部分(可能是此类数据所属的位置)有一些引用,例如:my_struct_inst % 0x190我是用 IDA 搞定的。这是什么意思? (那个结构实例将从 .FLASH_RAM 部分开始的偏移量 0x190 处开始?)

3) 当我编写 my_struct_inst.some_member 时,实际地址(结构实际位于内存中的位置)是如何被访问的(我应该阅读一些 ABI 文档吗?)

最佳答案

结构的内存将在编译时分配。

地址将由您的链接描述文件定义。要查看结构的地址(假设它是一个全局变量),您将需要生成的 ELF 文件(在本例中我们称之为 a.elf)。然后运行:

arm-eabi-objdump -t a.elf | grep my_struct_inst

Objdump "-t"将列出所有全局符号及其地址和它所属的部分。您可以用您拥有的任何交叉编译的 objdump 替换“objdump”。

关于c - 在与 ARM 架构兼容的 ELF 文件中查找 C 结构的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19212956/

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