ZHCU947E June 2015 – January 2023
链接器会创建一个单独的输入段来保存压缩数据。请考虑链接器命令文件中的以下 table() 操作。
SECTIONS
{
.task1: load = ROM, run = RAM, table(_task1_table)
}
输出目标文件有一个名为 .task1 的输出段,其中具有不同的加载地址和运行地址。这是可行的,因为当段未被压缩时,加载空间和运行空间具有相同的数据。
或者,请考虑以下代码:
SECTIONS
{
.task1: load = ROM, run = RAM, table(_task1_table, compression=rle)
}
如果链接器对 .task1 段进行压缩,则加载空间数据和运行空间数据会不同。链接器会创建以下两个段:
在为 .task1 段的加载放置指定的存储器区域中,链接器为 .task1.load 输入段分配加载空间。只有一个加载段用于表示 .task1 的加载放置,也就是 .task1.load 段。如果尚未压缩 .task1 数据,则 .task1 输入段将有两个分配:一个用于该段的加载放置,另一个用于该段的运行放置。