以下是微处理器启动文件中的一行,用于输入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
答案 0 :(得分:9)
名称前面的点是汇编程序指令或本地标签。
汇编程序指令告诉as
执行一些特殊操作,例如.text
告诉它在目标文件的文本部分生成数据(对于代码和无法改变的文字)。还有像.space
这样的指令告诉它在目标文件中分配空白空间,这通常用于在bss部分中分配空间。
另一方面,我们有本地标签,如.L1
,它们在代码中使用,但不打算在目标文件中导出,应该从符号中隐藏表。
答案 1 :(得分:4)
但是,我并不同意它是一个局部变量。只有前缀为.L
的符号表示局部变量。(本地符号的命名约定是可移植的,但某些约定与机器有关)。输入info as
,导航到章节Symbols
和子章Symbol-names
,您就可以获得它。
我认为它只是一个符号,它是一个部分的名称,这个名称在链接描述文件中引用。你说你在微处理器启动文件中看到了这个。当然,链接微处理器启动文件需要链接器脚本。这个名字仅供参考,听起来可能很奇怪,但却是真实的。