符号表

✍ dations ◷ 2025-12-05 12:32:44 #编译器软件,数据结构

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

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

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

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

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

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

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

相关

  • 长臂猿长臂猿科(学名:Hylobatidae),哺乳纲灵长目的一科,即小型猿类。传统分类法只包括长臂猿属一属,现今根据其遗传演化之间的时间,可分为四属,分别为:长臂猿属(44对)、白眉长臂猿属(38对)、黑
  • 食品保存食品保存是指用于防止或减缓食品的败坏的方法,以保留食品的营养和味道,降低微生物与毒素产生,借此减少因使用食品导致疾病的几率。食品保存的原理主要可分为两大部分,分别为减缓
  • 谢 毅谢毅(1967年7月23日-),中国化学家,主要研究方向为无机固体化学。生于蚌埠,原籍安庆。1988年毕业于厦门大学化学系,1996年获中国科技大学应用化学博士学位。2013年当选为中国科学院
  • 内布卡二世内布卡二世(Bikheris)古埃及古王国时期第四王朝国王。(约公元前2558年左右),他的记载极少,其金字塔和木乃伊也未被发现,一些考古学家认为这是一个虚构人物。
  • 玛瑞娜戴尔瑞玛瑞娜戴尔瑞(英语:Marina Del Rey)是位于美国加利福尼亚州洛杉矶县的一个人口普查指定地区。玛瑞娜戴尔瑞的座标为33°58′46″N 118°27′10″W / 33.97944°N 118.45278°W
  • 帕斯夸尔·塞韦拉帕斯夸尔·塞韦拉·托佩特(西班牙语:Pascual Cervera y Topete,1839年2月18日-1909年4月3日)是西班牙海军将领,曾任海军大臣、参谋长等职,于美西战争期间作为舰队指挥官与美国对战
  • 杰姆雷·费拉杰姆雷·费拉(土耳其语:Cemre Fere,1994年2月8日-),土耳其女子羽毛球运动员。只列出曾进入半决赛的国际赛事成绩:
  • 德川庆昌德川庆昌(1825年5月1日-1838年7月5日),御三卿一桥德川家第6代当主。德川庆昌在文政八年三月十四(1825年5月1日)于江户城出生,是幕府将军德川家庆的第五子,幼名初之丞。天保八年(1837
  • 陈文彪陈文彪(1910年-1962年),中国人民解放军将领、中国人民解放军开国少将。曾任中国人民解放军总军械部第三副部长。1955年,授予中国人民解放军少将。1962年11月24日下午在北京逝世。
  • 敖平镇敖平镇,是中华人民共和国四川省成都市彭州市下辖的一个乡镇级行政单位。2019年12月,撤销红岩镇,将其所属行政区域划归敖平镇管辖,敖平镇人民政府驻敖兴街85号。敖平镇下辖以下地