符号表

✍ dations ◷ 2025-02-24 01:29:51 #编译器软件,数据结构

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

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

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

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

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

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

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

相关

  • 檀君朝鲜/《桓檀古记》是一部有关东北亚及朝鲜半岛传说时代的书籍。此书由太白教教徒桂延寿和李沂于日韩合并后第二年的1911年编写,1979年出版印刷,主要描述帝释桓因之子桓雄降临和檀君
  • 热胀冷缩热胀冷缩是指物体受热时会膨胀,遇冷时会收缩的特性。由于物体内的粒子(原子)运动会随温度改变,当温度上升时,粒子的振动幅度加大,令物体膨胀;但当温度下降时,粒子的振动幅度便会减少
  • ATC代码 (J07)A·B·C·D·G·H·QI·J·L·M·N·P·R·S·VATC代码J07(疫苗类)是解剖学治疗学及化学分类系统的一个药物分组,这是由世界卫生组织药物统计方法整合中心(The WHO Collaboratin
  • 上海话拉丁化方案上海话拉丁化方案指上海话的拉丁字母转写方案。以下列出部分学者在其专著中针对现代上海话设计的拉丁化方案及首届国际上海方言学术研讨会审定的两套方案。这十套方案按浊塞
  • 尼帕-库图布县坐标:6°08′S 143°25′E / 6.133°S 143.417°E / -6.133; 143.417尼帕-库图布县(英语:Nipa-Kutubu District),是巴布亚新几内亚的县份之一,位于新几内亚岛东部,由南高地省负责管
  • Bunga Citra Lestari本娥·奇特拉(印尼语:Bunga Citra Lestari,简称:BCL,(1983年3月22日-))是一位印尼知名女歌手及演员。出生于印尼雅加达。2005年Bunga Citra Lestari发行第一张电视原声带,使Bunga Cit
  • 冈田惠和冈田惠和(1959年2月11日-),知名日本电视剧剧作家,出生于东京都三鹰市。经纪公司为Matsu Company(日语:マツ・カンパニー)。冈田惠和毕业自和光高等学校,和光大学人文学院肄业。在企划
  • 麦克·詹姆斯迈克尔·拉蒙特·詹姆斯(英语:Michael Lamont James,1975年6月23日-),生于纽约州阿米提维尔,美国职业篮球运动员,司职控球后卫。在迪尤肯大学打球期间,詹姆斯是大学历史上抢断第三多(
  • 朗姆酒蛋糕朗姆酒蛋糕(英语:Rum cake)是一种含有朗姆酒成分的甜点蛋糕。在多数加勒比地区,朗姆酒蛋糕是传统的圣诞节和假日季节(英语:Christmas and holiday season)甜点,来自假日布丁(如无花果
  • 隆盛镇 (金堂县)隆盛镇,是中华人民共和国四川省成都市金堂县下辖的一个乡镇级行政单位。2019年12月,撤销隆盛镇,将其所属行政区域划归转龙镇管辖。隆盛镇下辖以下地区:兴隆社区、石竹村、茅庵堂