符号表

✍ dations ◷ 2025-12-01 05:22:18 #编译器软件,数据结构

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

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

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

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

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

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

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

相关

  • 莱斯大学莱斯大学(英语:Rice University;威廉·马歇尔·莱斯大学于1912年开办,开办之初名为威廉·马歇尔·莱斯文学、科学与艺术发展学院)是座落于美国德克萨斯州休斯顿市的一所私立的研
  • 蛇颈龙类蛇颈龙目(Plesiosauria),希腊文意思是“接近蜥蜴”,是中生代爬行动物的一目。它们首次出现在三叠纪晚期,在侏罗纪特别繁盛,直到白垩纪-第三纪灭绝事件。蛇颈龙类有两个不同的意思:
  • 落叶林落叶植物,是植物学中一个常见名词,与常绿植物相对,在一年中有一段时间叶片将完全脱落,枝干将变得光秃秃的没有叶子。落叶性出现的原因如季节及气候有明显关系。由于在秋冬季节温
  • 梅迪纳县梅迪纳县(Medina County, Texas)是美国德克萨斯州西南部的一个县。面积3,456平方公里。根据美国2000年人口普查,共有人口39,304人。县治洪多(Hondo)。1848年2月12日置县。县名来
  • Paragonimus microrchis小睾并殖吸虫(学名:Paragonimus microrchis)为并殖科并殖属的动物。在中国大陆,分布于云南西双版纳等地,营寄生生活,终末宿主家猫、家犬和大白鼠(均为人工感染),寄生于肺以及少数在胸
  • 十六烷十六烷(英语:hexadecane、cetane)是化学式为C16H34的烷烃。十六烷由16个碳原子直链组成,头和尾被3个氢原子连着,中间2个。十六烷值用以量度柴油的易燃性。在压缩下,十六烷非常易燃
  • 娑罗属娑罗属(学名:)是龙脑香科中可能有近189种植物(大多为雨林树木)的一个属。它们分布在东南亚,从印度北部延伸到印度尼西亚和菲律宾。许多重要实惠的木材树木来自于娑罗属。本属获得
  • 大卫·博罗斯大卫·博罗斯(David Burrowes,1969年6月12日-)是一位英格兰政治人物,他的党籍是保守党。自2010年开始,他担任恩菲尔德绍斯盖特选区选出的英国下议院议员。他是保守党基督徒团契的
  • 林凤冈林凤冈(1645年1月11日-1732年7月22日)名又四郎、春常、信笃,字直民,号凤冈、整宇,日本江户时代儒学学者。林鹅峰次子,生于江户。因兄春信(梅洞)早逝而成为林家继承人。1680年继任大学
  • 鸟居清长鸟居清长(1752年-1815年6月28日),江户时代的浮世绘画家。鸟居清长为鸟居清满的学生,鸟居派的第四代继承人画家。属于铃木春信与喜多川歌麿之中时期的人物,活跃于天明年间。清长以