ZHCUAU3J January 2018 – March 2024
链接器可使用户指定一个显式的存储器范围列表,可以向其中分配输出段。考虑以下示例:
MEMORY
{
P_MEM1 : origin = 0x02000, length = 0x01000
P_MEM2 : origin = 0x04000, length = 0x01000
P_MEM3 : origin = 0x06000, length = 0x01000
P_MEM4 : origin = 0x08000, length = 0x01000
}
SECTIONS
{
.text : { } > P_MEM1 | P_MEM2 | P_MEM4
}
运算符 | 用于指定多个存储器范围。输出段 .text 作为一个整体分配给与之适应的第一个存储器范围。存储器范围按指定顺序访问。在此示例中,链接器首先尝试在 P_MEM1 中分配段。如果该尝试失败,链接器会尝试将该段置于 P_MEM2 中,依此类推。如果未在任何指定的存储器范围中成功分配输出段,则链接器会发出错误消息。
借助这种类型的 SECTIONS 指令规范,链接器可以无缝处理超出最初分配的存储器范围可用空间的输出段。用户可以让链接器将段移动到其他某个区域,而不是修改链接器命令文件。