符号表

✍ dations ◷ 2025-12-06 02:52:11 #编译器软件,数据结构

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

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

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

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

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

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

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

相关

  • 普罗可布咖啡馆普罗可布咖啡馆(Café Procope)位于巴黎第六区的老喜剧院街(rue de l'Ancienne Comédie),被称为巴黎最古老的连续开业的餐馆。它在1686年开业 由意大利西西里人Francesco Procop
  • 马克II型坦克Mark I 坦克由英国研制并在第一次世界大战于英国军队服役,是世界上第一种正式参与战争的坦克。 Mark I 坦克在1916年8月开始服役,并于1916年9月15日首次应用在索姆河战役上。
  • 地核-地幔连接古登堡界面(古氏不连续面)是地核与地幔的交界。1914年,德国地球物理学家宾诺·古登堡(Beno Gutenberg)发现地下2885千米处地震波的传播速度有明显变化,其中纵波的速度明显下降,横波
  • 释名《释名》是东汉刘熙(或又作刘熹)撰写的一部训诂专著,以探求词源为主要目的,以声训为主要手段,是汉语中第一部解释事物命名缘由的专书:382。全书共8卷27篇。明朝郎奎金在将《释名
  • 阿斯马拉坐标:15°20′N 38°56′E / 15.333°N 38.933°E / 15.333; 38.933阿斯马拉(提格雷尼亚语:ኣስመራ;阿拉伯语:إريتريا‎)是厄立特里亚的首都,人口约80万,海拔2325米,其首都海
  • 蚁蛉蚁蛉是脉翅目蚁蛉科昆虫的成员。蚁狮是称呼此科的幼虫,而成虫被称之为蚁蛉。蚁狮会经历完全变态过程。幼虫会在沙地上制造出漏斗状的陷阱(蚁之地狱),好让蚂蚁或木虱之类的动物掉
  • 禽类传染性支气管炎病毒传染性支气管炎病毒(Avian coronavirus、IBV)是丙型冠状病毒属的一种病毒,于1930年代即被发现,是冠状病毒中最早被发现者。此病毒可感染鸟类,造成家禽传染性支气管炎(英语:Avian in
  • 居文沛居文沛(1975年9月6日-),出生于重庆,中国女主持人。现为CCTV-6节目《世界电影之旅》的主持人,亦是澳门卫视特邀主持人。居文沛不仅担任过多个电视节目的主持人,也出演过不少影视剧,在
  • 成浩成浩(1956年9月-),汉族、湖南长沙人。他毕业于中央戏剧学院导演专业,现为广东电视台导演,因电视剧《荣誉》获2004年第四届中国电视艺术“十佳导演”。他是国家一级导演、第九届广
  • 弗兰克·阿瑙弗兰克·阿瑙(Frank Arnau,1894年3月9日-1976年2月11日)是一位作家,出生于奥地利,最有名的作品是《The art of the faker》。