12

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

.section  .isr_vector,"a",%progbits

名字开头的点有.isr_vector什么特别的意思吗?PS:此名称由 GNU 链接器ld引用。

编辑:

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

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
4

2 回答 2

18

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

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

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

于 2013-12-29T22:14:39.433 回答
6

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

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

于 2018-03-13T03:29:16.850 回答