符号表

✍ dations ◷ 2025-12-10 03:02:34 #编译器软件,数据结构

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

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

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

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

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

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

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

相关

  • 溯因推理溯因法或溯因推理(英语:abductive reasoning,也译作反绎推理、反向推理),是推理到最佳解释的过程。换句话说,它是开始于事实的集合,并推导出其最佳解释的推理过程。有时使用术语溯
  • 安哥拉经济安哥拉经济为世界成长最快速的经济体之一,但在1975年至2002年的安哥拉内战破坏后,现今仍在重建中,虽然有大量的石油及天然气资源、钻石、水力蕴藏及耕地,但安哥拉依然贫困,有三分
  • 雷顿市雷顿(英文:Layton),是美国犹他州戴维斯县下属的一座城市。建市于 不明年份年,面积大约为22.17平方英里(57.4平方公里),海拔约为4,350英尺(1,330米)。根据2010年美国人口普查,该市有人口
  • 联邦医疗保险联邦医疗保险(Medicare),为美国联邦政府对老年人和部分残疾人、重病患者提供的全国范围医疗保险。给付范围为住院费用,包括双人病房、餐点与检查。依据2016年1月1日联邦医疗保险
  • 平均每人平均每人(拉丁语:Per capita)是统计学术语,广泛应用于社会科学领域或统计研究文章,如政府统计资料或经济指标(英语:Economic indicator)等。法学上,订立遗嘱时也使用此词表述每位受益
  • 质子衰变质子衰变,在粒子物理学上,是一个假设的放射性衰变,这假设预言了质子在衰变的时候,会变成更轻的亚原子粒子,通常是中性π介子和正电子。质子衰变从未被证实,至今仍没有证据显示质子
  • 杨琪良杨琪良(1914年-2003年),河北任丘人,中华人民共和国政治人物、外交官。1930年代投身共产党运动,1937年加入中国共产党,先后曾任河北省人民抗日自卫军第五路军政治部主任、八路军冀中
  • 三宅康贞三宅康贞(1544年—1615年12月13日)是日本战国时代至江户时代初期的武将、大名。三河国举母藩(日语:挙母藩)初代藩主。田原藩(日语:田原藩)三宅家初代。父亲是三宅政贞。通称惣右卫门
  • 下位捕虫笼下位捕虫笼(lower pitcher),简称下位笼,是猪笼草捕虫笼的一种形态。猪笼草的幼株和莲座状植株一般都会生长出下位笼。当猪笼草植株生长到一定程度后,如具攀援茎后,其捕虫笼就会由
  • 天主教橙县教区天主教橙县教区(拉丁语:Dioecesis Arausicanae in California)是美国一个罗马天主教教区。范围包括加州橙县。属洛杉矶总教区。2010年有教友1,280,159人、57个堂区、247名司铎