0

我有一些零初始化的数据。

我在分散文件中为它们分配了一个执行区域。

Some_Execution_Region +0
{
    stuff.o (+RO, +RW, +RI)
}

但是在使用 fromelf 将其从 axf 文件转换后,我在生成的二进制文件中看不到任何零初始化数据段。

二进制文件在零初始化数据应该开始的位置之前停止。

所以问题是如何让 fromelf 为二进制文件中的零初始化数据生成空白区域。

我在 ARM 网站上查找过,但没有运气。我只发现了一些禁用零初始化数据的选项。(这是否意味着因为我没有使用该选项,所以我应该在我的二进制文件中获取我的零初始化数据?)

我目前只是运行fromelf.exe --bin --output=binary.bin elffile.axf,它不会生成零数据。

4

1 回答 1

1

无需将所有零实际存储在二进制文件中。如果您使用的是 C,那么默认值是将未显式初始化为其他值的静态变量进行零初始化。C 运行时代码不会将零从可执行文件复制到 RAM,它只是获取需要归零的 RAM 部分的开始和结束地址。告诉链接器变量必须在启动时归零的典型方法是将它们放在.bss(空白静态存储)段中,但除非您正在编写汇编代码,否则您不需要显式执行此操作。

于 2012-11-16T23:40:43.827 回答