符号表

✍ dations ◷ 2025-12-02 08:16:39 #编译器软件,数据结构

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

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

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

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

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

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

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

相关

  • 丙糖丙糖(Triose),又称为三碳糖,是含有三个碳原子的一类单糖,共包含两个化合物:丙糖是细胞呼吸过程中的重要物质。D-甘油醛:二羟基丙酮:果聚糖:菊粉 · 果聚糖β2→6甘露聚糖:低聚木糖:半
  • 尿流率图尿路动力学(英文:Urodynamics),简单来说是指液体在尿道上的流动所涉及的事项。尿路动力学(在中国称:尿流动力学或尿动力学)一词其原意是指液体在尿道上的流动所涉及的事项1。但是,在
  • 产金菌属产金菌门(Chrysiogenetes)是一支独特的细菌,目前只发现了一个种,即砷酸产金菌(Chrysiogenes arsenatis)。它具有独特的生活方式和生化过程。它经营化能无机自养,利用对绝大多数生物
  • 灯谜灯谜,在中国习俗的活动上会称做猜灯谜,每年逢正月十五元宵节,会将灯谜结合赏花灯,变成许多人可共同参与的猜谜游戏。与一般的谜语相比,具有更严格的规则。方法是将谜语贴在灯上,多
  • 膝跃反射膝跃反射,或称膝跳反射(英:Knee jerk reflex)是一种反射动作,当膝关节半屈和小腿自由下垂时,轻敲一下膝盖骨下方,引起股四头肌收缩,小腿就会往前踢的反应。反射弧的传入和传出途径
  • 香味、香气气味是人类嗅觉系统对散布于空气中的某些特定分子的感应。人们把使人愉快的气味称为香味,把使人不快的气味称为臭味。人类大概能识别1000种不同的气味。气味分子进入鼻孔后,会
  • 长舌果蝠长舌果蝠(学名:Eonycteris spelaea)为狐蝠科长舌果蝠属的动物。在中国大陆,分布于广西、云南等地,主要生活于热带岩洞。该物种的模式产地在缅甸。
  • 圣酵圣礼圣酵圣礼(Classical Syriac:ܡܲܠܟܵܐ‎)是一种将制作圣餐饼的面团留一部分作为下次做圣餐饼时的酵母的仪式。为东方亚述教会以及以往的各东方教会所特有的圣礼。其叙利亚文
  • 熙元熙元(1864年-1900年),喜塔腊氏,字吉甫,晚清官员、画家。满洲正白旗人。直隶总督裕禄子。光绪十五年(1889年)进士。同年五月,改翰林院庶吉士。光绪十六年四月,散馆,授翰林院编修。累迁国
  • 雪梨茶雪梨茶在一般凉茶铺都有卖,功效有润燥止咳,清热生津。如在家调制,可用鲜秋梨放砂锅内煎煮,用冰糖去调味,放入冰箱做冻饮。