符号表

✍ dations ◷ 2025-12-03 17:37:54 #编译器软件,数据结构

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

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

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

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

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

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

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

相关

  • 经合组织“经合组织”可能指:
  • 布鲁氏菌科布鲁氏菌属(Brucella) Crabtreella(英语:Crabtreella) Daeguia(英语:Daeguia) Falsochrobactrum(英语:Falsochrobactrum) 支动菌属(英语:Mycoplana)(Mycoplana) 苍白杆菌属(英语:Ochrobactrum)(O
  • 埃尔伍德·詹森埃尔伍德·詹森(英语:Elwood Vernon Jensen,1920年1月13日-2012年12月16日),美国医学家,辛辛那提大学医学院Vontz分子生物学研究中心乔治和伊丽莎白癌症研究主席。在2004年,他因对雌
  • 波利尼西亚人波利尼西亚人是大洋洲一系列族群的总称,他们使用波利尼西亚诸语言,属于南岛语系的一个分支,并居住在波利尼西亚。即北至夏威夷群岛,东南至复活节岛,西南至新西兰群岛的三角形区域
  • 内布拉斯加州内布拉斯加州议会(英语:Nebraska Legislature)是美国内布拉斯加州的一院制议会。该州的一院制,使内布拉斯加州在美国各州中独树一帜;它拥有49名成员,也是美国所有州中最小的立法机
  • 理型论理型论(英语:theory of Forms,或theory of Ideas),西方哲学对于本体论与知识论的一种观点,由柏拉图提出。理型论认为,在人类感官能够感受到事物的共相之上,存在着一种抽象的完美理型
  • 被子植物APG分类法《被子植物APG分类法》是1998年由被子植物种系发生学组(APG,Angiosperm Phylogeny Group)出版的一种对于被子植物的现代分类法。和传统的依照形态分类不同,这种分类法主要依照植
  • 2007年10月加州山火2007年10月加州山火是自2007年10月20日开始的美国南加州地区一系列的山火。大火导致至少1500户房屋被毁,90万名居民被迫疏散燃烧范围涉及从圣巴巴拉县到美国墨西哥边境总计超
  • 你的幼妻英文版游戏封面《你的幼妻》(あなたの幼妻)是一个由日本TRABULANCE(トラヴュランス)在2003年9月5日发售的成人游戏。2005年12月20日由专门从事将日本美少女游戏翻译成英文的公司
  • 罗纳德斯·赞克兹罗纳德斯·赞克兹(拉脱维亚语:Ronalds Zaķis,1987年7月8日-),拉脱维亚篮球运动员,现在效力于拉脱维亚球队里加篮球俱乐部。他也代表拉脱维亚国家男子篮球队参赛。