ZHCU875Z August 2001 – October 2023 SM320F28335-EP
使用页面方法指定地址,可以将段分配到在 MEMORY 指令中命名的地址空间。例如:
MEMORY
{
PAGE 0 : PROG : origin = 0x00000800, length = 0x00240
PAGE 1 : DATA : origin = 0x00000A00, length = 0x02200
PAGE 1 : OVR_MEM : origin = 0x00002D00, length = 0x01000
PAGE 2 : DATA : origin = 0x00000A00, length = 0x02200
PAGE 2 : OVR_MEM : origin = 0x00002D00, length = 0x01000
}
SECTIONS
{
.text: PAGE = 0
.data: PAGE = 2
.cinit: PAGE = 0
.ebss: PAGE = 1
}
在此例中,.text 和 .cinit 段被分配至 PAGE 0。它们置于 PAGE 0 边界中的任意位置。.data 段被分配至 PAGE 2 边界中的任意位置。.ebss 或 .bss 段被分配至 PAGE 1 边界中的任意位置。
您可以将页面方法与任何其他方法结合使用,将分配限制于具体地址空间。例如:
.text: load = OVR_MEM PAGE 1
在本例中,.text 段被分配给了命名存储器范围 OVR_MEM。但有两个名为 OVR_MEM 的存储器范围,您必须指定要使用哪一个。添加 PAGE 1 即指定使用地址空间 PAGE 1 中的 OVR_MEM 存储器范围,而不是地址空间 PAGE 2 中的。如果段未指定 PAGE,链接器会将初始化的段分配至 PAGE 0,将未初始化的段分配至 PAGE 1。