符号表

✍ dations ◷ 2025-12-07 05:47:44 #编译器软件,数据结构

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

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

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

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

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

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

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

相关

  • 吉特曼氏综合症吉特曼氏综合症(英语:Gitelman syndrome),又称吉特曼症候群 ,是一种常染色体隐性肾脏疾病,其特点是低钙(hypocalciuria)、及低镁(hypomagnesemia)之低钾代谢性碱中毒(Metabolic alkalos
  • 氢氧化铜氢氧化铜(化学式:Cu(OH)2)是金属铜的氢氧化物。它是一种淡蓝色固体,某些市售的氢氧化铜中混有一些碳酸铜,颜色偏绿。氢氧化铜自从熔铜开始就已经为人所知。公元前5000年的炼金术
  • 约翰·亚当斯约翰·亚当斯(英语:John Adams,1735年10月30日-1826年7月4日),马萨诸塞州人,律师出身,美国政治家。曾经参与独立宣言的共同签署,被美国人视为其中一位开国元勋。并在1789年-1797年间,出
  • 正丁硫醇正丁硫醇,学名为1-丁硫醇,也被称作硫氢丁烷,其化学式为C4H9SH,是一种易挥发的淡黄色液体,并且具有极其难闻的恶臭气味,通常被描述为“臭鼬”的气味。事实上,丁硫醇是结构和臭鼬防御
  • 台中医院卫生福利部台中医院(简称台中医院)是一所位于台湾台中市的卫生福利部所属医院。创设于1895年,前身为日治时期“台湾总督府台中病院”。是台湾中部唯一的结核病专属医院。坐标:24
  • 都会东区都会东区 (Metro-East)是美国密苏里州圣路易东部郊区,覆盖了伊利诺伊州五个县:麦迪逊县、圣克莱尔县、门罗县、泽西县和克林顿县。面积6,974平方公里,根据美国2000年人口普查人口
  • 预备役美国陆军预备役司令部(英语:United States Army Reserve Command,USARC)
  • 日本国政府 */?)是日本的治权机构,日语口语常直接以“政府”称之,通常指中央行政部门,但广义上也包括中央立法部门与中央司法部门。法律上则多以“国家”(国/くに  ?)代称。目前日本的政府
  • 长冈辉子长冈辉子(長岡 輝子,1908年1月5日-2010年10月18日)是日本的女演员。长冈辉子出身岩手县盛冈市,本名篠原辉子(旧姓长冈)。 毕业于东洋英和女学院,文化学院肄业。 处女作为“在风中摇
  • 严肃的男人《严肃的男人》(英语:)是一部2009年美国的黑色喜剧电影,由乔尔与伊桑·科恩编剧、监制、剪辑和导演。本片主演是迈克尔·舒伯,描述他所饰演的一名犹太男子事业与家庭生活一起走下