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