符号表

✍ dations ◷ 2025-06-09 01:13:19 #编译器软件,数据结构

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

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

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

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

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

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

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

相关

  • 环境雌激素环境雌激素(英语:Environmental estrogen,或称为仿雌激素、外源性雌激素 英语:Xenoestrogen),指进入人体后可产生具有模拟雌激素作用的环境毒素,会对生物有生殖方面的影响,使得幼体
  • 圣诞树圣诞树 (Christmas tree),是圣诞节期间,庆祝中最有名的传统摆设之一。在过去,通常人们在圣诞前后把一棵常绿植物如松树弄进屋里或者在户外,并用圣诞灯和彩色的装饰物装饰,把一个星
  • 大鼠大鼠(学名:Rattus norvegicus f. domestica :147)是褐家鼠(Rattus norvegicus)的驯化型,生理和心理上都与野生的褐家鼠存在区别。以褐家鼠为基础培育出的动物实验用大鼠是医学及生
  • 平地平地可以指:
  • 航空灭火空中消防是指运用飞机、直升机或其他航空设备,从空中扑灭火势的行动或技术,通常用于森林大火等大面积火灾。消防飞机搭载用专用的水槽,以盛装灭火剂或水,来源可以是地面装填或是
  • 德浪河谷美国等国正式介入之后美国撤出至南越灭亡德浪河谷战役(Battle of Ia Drang)是美国介入越南战争以来,美军与越南人民军(北越军)主力部队第一次重大正面交战,双方都认为取得了很大的
  • 亲波斯者亲波斯者(英语:Persophilia,波斯语:پارس‌دوست‎,Pārs Dūst),或称亲伊朗者(英语:Iranophilia,波斯语:ایران‌دوست‎,Īrān Dūst)是指对伊朗文化、伊朗人或伊朗历史
  • bump.ybump.y是在2009年所组成的女子五人团体。所属事务所为Sweet Power,唱片公司则是PONY CANYON。2009年10月,以TBS电视台的网络剧“bump.y”所组成。成员樱庭奈奈美表示定位为一
  • 布拉迪斯拉发新城布拉迪斯拉发新城(斯洛伐克语:Nové Mesto)是斯洛伐克首都布拉迪斯拉发的一个区,在行政区划上属于布拉迪斯拉发3区。布拉迪斯拉发新城位于旧城区的北部和东北部。20世纪之后,布拉
  • 人类 (中土大陆)人类(Man)或者人族在J·R·R·托尔金的《魔戒》系列和《霍比特人历险记》等众多作品所建构出来的中土世界里指的是一个人性化的种族。虽然霍比特人有可能属于人类的分支,而迈雅