【发布时间】:2011-04-15 10:18:10
【问题描述】:
假设我有一个 128KB 的内存区域。在我的链接器指令中,我将此区域分为三个部分:
- .section_text
- .section_data
- .section_bss
每个部分的大小在编译前是未知的,但我已经限制 .section_bss 在分配 .section_text 和 .section_data 后使用内存区域内的所有剩余空间。
有什么方法可以声明一个用完 .region_bss 中所有可用空间的 C 数组?假设它是唯一使用 .region_bss 的东西,因此它可以安全地使用整个区域。出于示例目的但显然是错误的:
char entire_bss[sizeof(.region_bss)];
这是我对一些预期响应的预先回答。首先,我知道 sizeof() 不能这样工作。我只是用它来获得一个想法。其次,假设这必须用数组而不是指针来完成(用指针解决是可能的并且相当简单)。第三,我知道我可以获得 .region_bss 的开始和结束地址,但我不知道有什么方法可以使用它们来调整我的数组大小。至少不是任何在 C 中有效的方式。
可能没有办法做到这一点,但我希望那里的一些天才已经弄清楚了。如果您可以使其与 Green Hills 工具集一起使用,则可加分。
【问题讨论】:
标签: c arrays linker sizeof greenhills