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
一个由点 (.) 表示的特殊符号,表示分配期间段程序计数器 (SPC) 的当前值。SPC 会跟踪某个段中的当前位置。链接器的 . 符号类似于汇编器的 $ 符号。. 符号只能在 SECTIONS 指令的赋值语句中使用,因为 . 仅在分配期间有意义,并且 SECTIONS 会控制分配过程。(请参阅节 8.5.5。)
. 符号指段的当前运行地址,而不是当前加载地址。
例如,假设一个程序需要知道 .data 段开头的地址。通过使用 .global 指令(请参阅识别全局符号),可在程序中创建一个名为 Dstart 的外部未定义变量。然后,向 Dstart 赋予 . 的值:
SECTIONS
{
.text: {}
.data: {Dstart = .;}
.bss : {}
}
此代码会将 Dstart 定义为 .data 段的第一个已链接地址。(在分配 .data 之前 先分配 Dstart。)链接器会重新定位对 Dstart 的所有引用。
一种特殊类型的赋值语句为 .(点)符号赋值。这会调整输出段内的 SPC 并在两个输入段之间创建一个空洞。分配给 . 以创建空洞的任何值都是相对于段的开头,而不是相对于 . 符号实际表示的地址。空洞和 . 的赋值语句详见 节 8.5.11。