符号表

✍ dations ◷ 2025-12-04 00:20:23 #编译器软件,数据结构

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

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

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

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

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

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

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

相关

  • 篆书陶文 ‧ 甲骨文 ‧ 金文 ‧ 古文 ‧ 石鼓文籀文 ‧ 鸟虫书 ‧ 篆书(大篆 ‧  小篆)隶书 ‧ 楷书 ‧ 行书 ‧ 草书漆书 ‧  书法 ‧ 飞白书笔画 ‧ 
  • 四词谬误四词谬误(英语:fallacy of four terms;拉丁语:quaternio terminorum)是一种形式谬误,系因三段论含有四个以上的词项,导致论证无效。传统的三段论只牵涉三个词项,如以下论证包含了三
  • 哔叽哔叽,是一种纺织品。斜纹,表面光洁,质地较厚而软,通常为素色。“哔叽”来源于法语的“米色”(beige),而英语则称之为serge。据说,丝绸制的哔叽由中国人发明。
  • 4年(希律王曾下令屠杀新生儿,希律在公元前4年去世,耶稣应在此年或之前出生。)
  • 顺天府顺天府,中国明清行政区划单位之一,相当于现在中华人民共和国首都北京市市区,但管辖面积不同。“顺天府”也指该地区地方政府衙门,相当于现今北京市政府。元朝时称大都路,直属中书
  • 侧齿铰齿(Hinge teeth)是多个物种的外壳内部表层的一部分,包括软体动物门的双壳纲及腕足动物门的旧有铰纲的物种。根据定义,这些物种都有两瓣壳,而这两瓣壳通过在壳的背部或顶部边缘
  • 梁音梁音(1926年9月26日-2015年1月26日),原名梁成秋,男,黑龙江齐齐哈尔人,中国电影表演艺术家。代表作《冰山上的来客》。2005年被中华人民共和国人事部、国家广播电影电视总局评为“国
  • 韦顿学院 (马萨诸塞州)韦顿学院(Wheaton College)是一所四年制文理学院,最早成立于1834年,是美国最早的女子高等学校(Female Seminary)之一。之后于1912年改为女子文理学院,并于1988年开始接受男生入
  • 白泷酒造白泷酒造株式会社,于安政2年(1855年)创业。当时的汤泽是连接越后与江户间往来的城镇,白泷酒造的第一代凑屋藤助开设了旅店,使用汤泽的涌泉水酿制清酒。酒铺成为来往旅人及商人
  • 息止安所息止安所(拉丁语:Requiescat in pace)是一种简短的墓志铭,或是希望逝者永享安宁的短句。此语的英文缩写是“R.I.P.”,通常以全称“Rest in peace”或缩写的形式刻在墓碑上,作为碑