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的真面目彻底拆开。一、