ZHCUAV7Z september 1995 – march 2023 66AK2E05 , 66AK2H06 , 66AK2H12 , 66AK2H14 , AM1705 , AM1707 , AM1802 , AM1806 , AM1808 , AM1810 , AM5K2E04 , OMAP-L132 , OMAP-L137 , OMAP-L138 , SM470R1B1M-HT , TMS470R1A288 , TMS470R1A384 , TMS470R1A64 , TMS470R1B1M , TMS470R1B512 , TMS470R1B768
加载地址决定了加载程序将段的原始数据放在何处。对该段的任何引用(例如其中的标号)都会引用其运行地址。请参阅节 3.1.1,以简要了解加载和运行地址。
如果您只为某个段提供了一个分配(加载或运行),该段只会分配一次,并会在相同的地址加载和运行。如果您提供了这两个分配,该段会被视作两个大小相同的段来进行分配。这意味着,这两个分配都会占用存储器映射中的空间,并且彼此不能叠加,也不能与其他段叠加。(UNION 提供了一种叠加段的方式;请参阅节 8.5.7.2。)
如果加载地址或运行地址包含额外的参数,例如对齐或阻塞,请在相应的关键字后列出。在遇到关键字 load 后,与分配相关的一切内容都会影响加载地址,直到遇到关键字 run,在此之后,一切内容都会转而影响运行地址。加载和运行分配完全独立,因此其中任何一个的资格(例如对齐)都不会对另一个产生影响。您还可以先指定运行地址,再指定加载地址。可以使用括号来提高可读性。
下面的示例指定了加载和运行地址。
本例中,对齐只会应用到加载:
.data: load = SLOW_MEM, align = 32, run = FAST_MEM
下例中使用了括号,但作用与上例完全相同:
.data: load = (SLOW_MEM align 32), run = FAST_MEM
下例会针对运行分配将 FAST_MEM 对齐到 32 位并将所有加载分配对齐到 16 位:
.data: run = FAST_MEM, align 32, load = align 16
有关运行时重定位的更多信息,请参阅节 3.5。