云计算百科
云计算领域专业知识百科平台

Cortex-M3:为什么 ANY 可以自动分配剩余节?

难度:★★ 本文首发于我的嵌入式技术号「OneChan讲Soc嵌入式」,未经授权禁止转载。


你正在写一个分散加载文件。工程不大不小,有二十几个源文件,每个文件里都有 .text、.rodata、.data、.bss 这些标准段,还有几个自定义段。

你按部就班地写:

ER_IROM1 0x08000000 0x00080000 {
*.o (RESET, +First)
main.o (+RO)
startup.o (+RO)
system.o (+RO)
… 还有十几个 .o 等着你列 …
}

写到一半,你突然想:难道链接器不能自己把那些“剩下”的段自动分配掉吗?为什么非得我一个个列举?

能。关键字叫 ANY。

ER_IROM1 0x08000000 0x00080000 {
*.o (RESET, +First)
*.o (+RO)
.ANY (+RO) ; 剩余的只读段,全自动分配
}

但如果你以为 ANY 只是一个“省事”的语法糖,你就低估了链接器在背后为它构建的那套复杂的分配算法。今天这篇文章,就把 ANY 的真面目彻底拆开。


一、

赞(0)
未经允许不得转载:网硕互联帮助中心 » Cortex-M3:为什么 ANY 可以自动分配剩余节?
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!