符号表

✍ dations ◷ 2025-04-26 16:42:22 #编译器软件,数据结构

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

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

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

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

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

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

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

相关

  • 可用意识时间可用意识时间(Time of useful consciousness,简称TUC)是指一个人在氧气供应不足的情况下所能够进行飞航任务的反应时间。这段时间是从氧气供应的中断或暴露在缺氧环境中开始
  • 存储程序结构冯·诺伊曼结构(英语:Von Neumann architecture),也称冯·诺伊曼模型(Von Neumann model)或普林斯顿结构(Princeton architecture),是一种将程序指令存储器和数据存储器合并在一起的
  • 条件独立在概率论和统计学中,两事件R和B在给定的另一事件Y发生时条件独立,类似于统计独立性,就是指当事件Y发生时,R发生与否和B发生与否就条件概率分布而言是独立的。换句话讲,R和B在给定
  • 谢伯让谢伯让(Hsieh, Po-Jang Brown),台湾认知神经科学、脑科学家,国立台湾大学生命科学系学士、国立中正大学哲学研究所硕士、美国达特茅斯学院心理与脑科学系博士。曾任麻省理工学院
  • 宋徽宗宋徽宗赵佶(1082年6月7日-1135年6月4日),北宋第八位皇帝,自称教主道君皇帝,同时也是画家、书法家、诗人、词人和收藏家,且擅长古琴、蹴鞠、击鞠、打猎,自创“瘦金书”字体。徽宗在书
  • 酒泉卫星发射中心中国人民解放军军徽中国酒泉卫星发射中心,又称中国人民解放军第二十试验训练基地(中国人民解放军63600部队)、东风基地、东风航天城,位于内蒙古自治区阿拉善盟额济纳旗东风镇布
  • 尘菌马勃(Puffball)是一类担子菌门的真菌通称,一般为球形,未成熟前是白色,成熟后为褐色,内部为粉末状。可入中药,用于止血。以前的分类法将马勃统一列为一个腹菌纲(Gasteromycetes)或腹
  • 环岛回旋处,也称圆环或环岛地,是交通节点的一种特殊形式,属于平面道路交叉。环岛由环形车道和一个中心岛组成,这种设置使得任何一个方向而来的交通流量进入环岛后,均需以环岛的中心圈
  • 提坦泰坦(古希腊语:Τιτάν,读音为.mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida Sans Unicode","Code2000","Gentium"
  • 周义雄 (政治人物)周义雄(1957年11月18日-)中国国民党南投县埔里镇政治人物,曾任南投县埔里镇镇长及南投县议员。私立南台技术学院专科部毕业,曾任救国团埔里团委会会长以及第15与第16届南投县议员