符号表

✍ dations ◷ 2025-08-08 02:49:21 #编译器软件,数据结构

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

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

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

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

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

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

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

相关

  • 镍-62镍-62(英语:Nickel-62, 62Ni)是镍的一种同位素,共有28个质子及34个中子。镍-62是一种稳定同位素(英语:Stable isotope ratio),有着已知核种中最高的每一核子结合能(英语:nuclear bindi
  • 对掌拇肌拉动拇指横过手掌的肌肉拇指是手中最灵活的部分,由前臂中的四条肌肉和手本身中的四条肌肉所带动。对掌拇肌是在拇指底部形成一个鼓起的肌肉之一。其英文名opponens pollicis
  • 礼拜堂小圣堂是基督徒聚集和弥撒的场所,尤指没有神职人员常驻的教堂。它可以附属于各种机构,例如较大的教堂、大学、医院、 宫殿、 监狱或墓地,也可以是一座独立的建筑物,有时还有自己
  • 胎盘动物胎盘动物(学名:Placentalia)是脊索动物门哺乳纲的一个演化支,包含了所有现存真兽类的最近共同祖先及其后代,是真兽下纲(Eutheria)的冠群。胎盘动物包含各目如下:
  • 恐怖主义与中国恐怖主义在中国不仅局限在西域、局限在特定目标、局限在中小城市,2008年以来,中国的恐怖主义活动出现明显增加。中华人民共和国政府将北京、上海、天津、武汉、广州、沈阳、重
  • 硫酸氢钠硫酸氢钠(化学式:NaHSO4),也称酸式硫酸钠,硝石饼(niter cake) 。它的无水物有吸湿性。硫酸氢钠在达到其熔点前即分解为焦硫酸钠,故其熔点很难测定。硫酸氢钠的水溶液显酸性,1mol/L溶
  • 徐宏智徐宏智(1938年-),字升平,男,河北省武安县伯延镇人。当代著名作家,诗人。曾任辽宁日报文艺部主任编辑、辽沈晚报文艺部主任。现为中国通俗文学研究会会员、作家协会会员、散文学会理
  • 分散剂分散剂(英语:Dispersant/ Dispersing agent)为一种界面活性剂。其结构包含锚定段(Anchoring segment)与链体段(Chain segment)。主要目的是促进悬浮液中的粒子分离,避免产生沉降
  • 爪形扁裸藻爪形扁裸藻(学名:)为裸藻科扁裸藻属下的一个种。
  • 普罗维亚普罗维亚(英语:Provia)是富士胶片株式会社生产的一系列彩色反转片的统称。它的名称来源于富士公司早年生产的Fujichrome彩色反转片,与另一系列(Velvia)形成互补的市场关系。富士胶