符号表

✍ dations ◷ 2025-12-01 19:03:19 #编译器软件,数据结构

在计算机科学中,符号表是一种用于语言翻译器(例如编译器和解释器)中的数据结构。在符号表中,程序源代码中的每个标识符都和它的声明或使用信息绑定在一起,比如其数据类型、作用域以及内存地址。

散列表是用来实现符号表的一种常用技术。编译器可能会使用一个很大的符号表来包含所有的符号,或是针对不同的作用域使用层次结构的多个独立的符号表。

目标文件中通常会有一个包含了所有外部可见标识符的符号表。在链接不同的目标文件时,链接器会使用这些文件中的符号表来解析所有未解析的符号引用。

符号表可能只存在于翻译阶段,也可能被嵌入到该阶段的输出文件中,以供后续阶段使用。比如,它可用于交互式的调试器中,也可以在程序执行过程中或结束后提供格式化的诊断报告。

在逆向工程中,许多任务具会通过符号表来检查全局变量和已知函数的地址。如果可执行文件的符号表被strip这样的工具去除掉了,则逆向工程会更加困难。

在进行动态内存分配和变量访问时,编译器需要完成许多任务作,其中扩展的栈模型就需要用到符号表。

下图是一个小程序的符号表。该表是用GNU Binutils中的nm工具生成的。其中有一个数据类型符号(由类型 "D" 表明)和许多函数(自己定义的以及标准库中的)。第一列是每个符号在内存中的位置,第二列是"符号类型",而第三列则是符号名称。通过传递适当的参数,可以按照地址顺序生成该符号表。

相关

  • 刺激物刺激(英语:Irritation),是心理学或生理学的一种表现,心理学通常是指受某种情况的人类刺激下,如社交网站,受到担忧而产生抑郁等不良精神状况,亦含有长期性状况;生理学通常则指炎症或因
  • 基纳省基纳省(阿拉伯语:محافظة قنا‎),是埃及二十九省之一,位于埃及南部,首府为基纳。尼罗河贯穿本省。面积1,796平方公里,人口1,092,316人(2006年统计)。2009年12月7日,卢克索省自
  • 英国文学英语文学(英语:English literature)指英语写成的文学作品,作者不一定是来自英格兰。如约瑟夫·康拉德是波兰人,罗伯特·伯恩斯是苏格兰人。詹姆斯·乔伊斯来自爱尔兰,爱伦·坡来自
  • 新布尼亚病毒新布尼亚病毒(SFTS Virus),又称发热伴血小板减少综合征病毒,是布尼亚病毒科白蛉病毒属(英语:Phlebovirus)的一种病毒,其引发的病症称为发热伴血小板减少综合征,为一种经由蜱虫传染给
  • 酞嗪酞嗪(英语:Phthalazine)是一种杂环化合物,化学式C8H6N2,由一个苯环与一个哒嗪环稠合而成。喹唑啉也可看做萘环的两个CH被N原子替换,这样的结构称为萘啶。酞嗪及其衍生物不存在于自
  • 铜石并用时代铜石并用时代,新石器时代和青铜时代之间的过渡性时期,在该时期主要的工具和武器仍然是石器,但同时出现了少量以红铜器(天然铜器),又称红铜时代、金石并用时代。红铜即天然铜,质地软
  • 罗伯托·爱德华多·比奥拉罗伯托·爱德华多·比奥拉·普雷维迪尼(Roberto Eduardo Viola Prevedini,1924年10月13日 - 1994年9月30日),阿根廷政治家,军人独裁者。
  • 白云母白云母(英语:muscovite mica)为硅酸盐矿物的一种。化学式为KAl2(AlSi3O10)(F,OH)2,晶体结构为单斜晶系。它具有各向异性,可产生强双折射现象。白云母是最常见的云母,可见于花岗岩
  • 仝卓仝卓(1994年5月20日-),曾用艺名童卓,曾用名胡佳文、李佳文、李振华,山西运城人,中国男中音歌手、影视演员、主持人,流行美声组合声入人心男团前成员,中央戏剧学院歌剧系民族歌剧表演
  • OpenMI规范OpenMI-规范(开放式模型界面)定义了一个界面, 它允许相关模型之间在运行时在内存中交换数据。符合OpenMI规范的数学模型之间可以-边运行边共享信息(例如在每个时间步段),使得