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

Sab*_*ncu 8 assembly linker gnu ld readelf

以下是来自微处理器启动文件的一行,用于输入GNU汇编程序,如下所示:

.section  .isr_vector,"a",%progbits
Run Code Online (Sandbox Code Playgroud)

名称开头的点是否.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
Run Code Online (Sandbox Code Playgroud)

ran*_*ame 11

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

一个汇编程序指令告诉as做一些特殊的,例如.text告诉它在目标文件(对于像代码和文字不能更改)的文本部分生成数据.还有一些指令.space,告诉它在目标文件中分配空白空间,这通常用于在bss部分中分配空间.

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

  • `.L` 文档:https://sourceware.org/binutils/docs/as/Symbol-Names.html#Symbol-Names (2认同)

Han*_*IAO 5

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

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

  • 在[ELF规范](http://refspecs.linuxbase.org/elf/elf.pdf)中,带句点的节名称只是将系统节与用户节分开的命名约定。_Section名称带有点(。)前缀是为系统保留的,尽管如果现有的含义令人满意,应用程序也可以使用这些部分。应用程序可以使用不带前缀的名称,以避免与系统部分冲突。目标文件格式使一个可以定义的部分不在上面的列表中。一个目标文件可能包含多个具有相同名称的节。 (2认同)