符号表

✍ dations ◷ 2025-12-10 21:52:30 #编译器软件,数据结构

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

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

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

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

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

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

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

相关

  • J01AA·B·C·D·G·H·QI·J·L·M·N·P·R·S·VATC代码J01(抗菌药)是解剖学治疗学及化学分类系统的一个药物分组,这是由世界卫生组织药物统计方法整合中心(The WHO Collaboratin
  • 热中子中子温度,亦称中子能量,指的是自由中子的动能,单位通常是电子伏特。由于中子经过不同温度的减速剂会有不同的速度分布,一般可以使用温度来衡量中子的动能。中子的能量分布基本上
  • 技术分析技术分析是指研究过去金融市场的资讯(主要是经由使用图表)来预测价格的趋势与决定投资的策略。纯理论上,技术分析只考虑市场或金融工具真实的价格行为,在假设其价格会反应所有在
  • 鸣梁《鸣梁海战》(韩语:명량;又译《鸣梁:旋风之海》)是一部2014年上映的韩国古装战争电影,首次将万历朝鲜之役时期李舜臣率军以十二艘板屋船击退三百三十余艘日舰,取得胜利的鸣梁海战搬
  • 爱的代价参数所指定的目标页面不存在,建议更正成存在页面或直接建立下列一个页面(建立前请先搜寻是否有合适的存在页面可以取代):《爱的代价》是一首中文流行歌曲,李宗盛作词作曲,是台湾电
  • 2008年意大利大奖赛2008年意大利大奖赛是2008年世界一级方程式锦标赛第十四场比赛。于9月12日至9月14日在意大利蒙扎蒙扎赛道举行。赛巴斯蒂安·维特尔在成为F1最年轻的杆位获得者之后,在正式比
  • 劲歌王音乐盛典《劲歌王金曲金榜》颁奖典礼创建于2003年,“劲歌王”为华语流行音乐排行榜,由中国网络电视台音乐台、广州汽车音乐电台FM1027及广州耀星影视艺术传播中心联合举办。2003 刘德
  • 多曼塔斯·萨博尼斯多曼塔斯·萨博尼斯(立陶宛语:Domantas Sabonis;1996年5月3日-),出生于美国俄勒冈州的波特兰市,为现役立陶宛裔(英语:Lithuanian Americans)职业篮球运动员。目前效力于国家篮球协会(NB
  • 坚齿螺亚科坚齿螺亚科(学名:Camaeninae)包括下列各个属:
  • 普罗维亚普罗维亚(英语:Provia)是富士胶片株式会社生产的一系列彩色反转片的统称。它的名称来源于富士公司早年生产的Fujichrome彩色反转片,与另一系列(Velvia)形成互补的市场关系。富士胶