在GNU汇编程序中,点在名称的开头表示什么?

时间:2013-12-29 21:49:28

标签: assembly linker gnu ld readelf

以下是微处理器启动文件中的一行,用于输入GNU汇编程序

.section  .isr_vector,"a",%progbits

名称.isr_vector开头的点是否意味着什么特别的? PS:此名称由GNU链接器 ld 引用。

编辑:

此名称在readelf输出中也显示为 Section Header

Section Headers:
  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al
  ...
  [ 1] .isr_vector       PROGBITS        08000000 008000 0001ac 00   A  0   0  1

2 个答案:

答案 0 :(得分:9)

名称前面的点是汇编程序指令本地标签

汇编程序指令告诉as执行一些特殊操作,例如.text告诉它在目标文件的文本部分生成数据(对于代码和无法改变的文字)。还有像.space这样的指令告诉它在目标文件中分配空白空间,这通常用于在bss部分中分配空间。

另一方面,我们有本地标签,如.L1,它们在代码中使用,但不打算在目标文件中导出,应该从符号中隐藏表。

答案 1 :(得分:4)

但是,我并不同意它是一个局部变量。只有前缀为.L的符号表示局部变量。(本地符号的命名约定是可移植的,但某些约定与机器有关)。输入info as,导航到章节Symbols和子章Symbol-names,您就可以获得它。

我认为它只是一个符号,它是一个部分的名称,这个名称在链接描述文件中引用。你说你在微处理器启动文件中看到了这个。当然,链接微处理器启动文件需要链接器脚本。这个名字仅供参考,听起来可能很奇怪,但却是真实的。