符号表

✍ dations ◷ 2025-12-06 22:14:00 #编译器软件,数据结构

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

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

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

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

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

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

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

相关

  • 流行流行,原意为“易传播的”,它可以指:
  • 旋转对映异构物阻转异构现象是某些分子单键自由旋转受阻时,产生光活性异构体的现象,也可看作是构象异构的一类。其英文名为Atropisomer,来源于希腊文,其中a意为“不”,tropos意为“旋转”。该名
  • 女真族女真(女真文:,转写:.mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida Sans Unicode","Code2000","Gentium","Gentium Alte
  • 锲形体在几何学中,锲形体是一个四个面都是全等锐角三角形的四面体。它也可以被描述为一个具有三组对边等长的四面体。亦有人称他为等腰四面体。锲形体也可以被看作是二角反柱体,就像
  • 公民民主党公民民主党(捷克语:Občanská demokratická strana,缩写为ODS)是捷克的一个右翼政党。该党的政治主张结合了疑欧派与古典自由主义,但在政治实践中,该党在这两个议题上立场较为温
  • 丘吉尔丘吉尔县(英语:Churchill County)是美国内华达州中西部的一个县。面积13,010平方公里。根据2010年人口普查,本县共有人口24,877人。本县县治为法伦。当地有自己的电话公司丘吉尔
  • 让-巴普蒂斯·贝西埃尔让-巴普蒂斯·贝西埃尔(Jean Baptiste Bessières,1768年8月6日-1813年5月1日),法国军人、拿破仑麾下的元帅、帝国近卫军司令,获封伊斯特利亚公爵。贝西埃尔出生于法国南部卡赫尔
  • 塞缪尔·斯图普塞缪尔·斯图普(Samuel·I·Stupp,1951年1月9日在哥斯达黎加圣何塞出生),是伊利诺伊州芝加哥西北大学材料科学,化学及医学董事会教授。他以其在自组装材料和超分子化学方面的工作
  • 康拉德·海德坎普康拉德·“科尼”·海德坎普(德语:Conrad „Conny“ Heidkamp,1905年9月27日-1994年3月6日),已故德国足球运动员。作为一名后卫,他曾先后效力于杜塞尔多夫及拜仁慕尼黑,并随后者在19
  • 林潮 (弘治进士)林潮(?-?),字君信,福建泉州府晋江县人,明朝政治人物。弘治十八年(1505年),林潮中式乙丑科三甲进士。请求归乡养亲,触怒权阉刘瑾,被革职。刘瑾倒台后,起用为台州推官,擢升御史。正德年间,内侍