【ARM】为堆和栈保留空的内存块
此示例演示如何使用分散加载描述为堆栈和堆保留和清空内存块。它还显示链接器生成的相关符号。
在以下示例中,执行区域定义STACK 0x800000 EMPTY -0x10000
定义了一个名为STACK 的区域
。该区域从地址0x7F0000
开始,到地址0x800000
结束:
LR_1 0x80000 ; load region starts at 0x80000 { STACK 0x800000 EMPTY -0x10000 ; region ends at 0x800000 because of the ; negative length. The start of the region ; is calculated using the length. { ; Empty region for placing the stack } HEAP +0 EMPTY 0x10000 ; region starts at the end of previous ; region. End of region calculated using ; positive length { ; Empty region for placing the heap } ... ; rest of scatter-loading description }
注意
为EMPTY
执行区域创建的虚拟 ZI 区域在运行时不会初始化为零。
如果地址是相对 (+偏移量
) 形式,并且长度为负,则链接器将生成错误。
下图显示了此示例的图示表示形式。
在此示例中,链接器生成以下符号:
Image$$STACK$$ZI$$Base = 0x7f0000 Image$$STACK$$ZI$$Limit = 0x800000 Image$$STACK$$ZI$$Length = 0x10000 Image$$HEAP$$ZI$$Base = 0x800000 Image$$HEAP$$ZI$$Limit = 0x810000 Image$$HEAP$$ZI$$Length = 0x10000
注意
EMPTY
属性仅适用于执行区域。链接器将生成警告并忽略加载区域定义中使用的EMPTY
属性。链接器检查用于
EMPTY
区域的地址空间是否不与任何其他执行区域重叠。
【来源】
再牛逼的梦想也架不住傻逼似的坚持
分类:
ARM
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
2019-01-15 【rt-thread】线程内置定时器的作用--
2019-01-15 【rt-thread】软件定时器组件超时界限的一点理解
2018-01-15 KEIL打开的工程所在目录过深将会编译出错
2018-01-15 【rt-thread】 learning notes