符号表

✍ dations ◷ 2025-12-10 15:46:29 #编译器软件,数据结构

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

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

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

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

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

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

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

相关

  • 水俣病水俣病(日语:水俣病),为公害病的一种,成因为汞中毒。1956年左右于熊本县水俣市附近发生,经确认后依地得名。不久,于新潟县发现的新公害病亦称为水俣病。其区别为:前者称熊本水俣病;后
  • 以同治同以同治同是顺势疗法中一个重要原则,拉丁文similia similibus curantur可翻译成"以同类来治疗同类",指的是如某物质能使健康的人患病,那么将此物质稀释震荡处理后就能治疗该病。例
  • 健美健美,(英语:Body Building),是一种强调肌肉健壮与美的活动,起源于古希腊,最初只由男性参加,当时是以男子的粗壮的脖子、发达的胸肌、粗壮的双腿为美。 现代健美活动则由德国人尤金·
  • 哈佛大学哈佛学院(英文:Harvard College)为一所坐落于美国马萨诸塞州剑桥的本科教育机构。学校最初以“新学院”之名于1636年成立,是哈佛大学的源流,并为全美第一所高校。现隶属哈佛大学
  • 斐迪南一世 (保加利亚)斐迪南一世(Фердинанд I,1861年2月26日-1948年9月10日),全名斐迪南·马克西米利安·卡尔·利奥波德·马利·萨克森-科堡-哥达斯基(Фердинанд Максимил
  • 总统套房总统套房是指星级酒店用来接待总统级贵宾的豪华客房,是套房的最高级数。它会有这个名称是因为美国威尔逊总统每次出访时对下榻旅馆客房的特别规定,必须坐北朝南(北半球,南半球反
  • 詹姆斯·卡格尼小詹姆斯·法兰西斯·卡格尼(英语:James Francis Cagney Jr.,1899年7月17日-1986年3月30日)是一位美国舞台剧和电影演员和舞蹈员,他在电影方面有着最大的影响力。毕业于史岱文森高
  • 恩斯特·贡布里希恩斯特·汉斯·约瑟夫·贡布里希爵士,OM,CBE,FBA(英语:Sir Ernst Hans Josef Gombrich,1909年3月30日-2001年11月3日),英国艺术史学家与艺术理论家。1909年出生于奥匈帝国维也纳一个
  • 表达产物鼻咽部细胞分裂发生癌变时,Rta蛋白是EB病毒BRLF1基因特异性地表达产物,诱发机体产生Rta蛋白抗体,成为检测鼻咽癌的特异性血清学指标之一。
  • 远古埃及语远古埃及语是埃及语的一个阶段,使用于早王朝时期,持续使用至公元前2600年左右。已知最古老的用远古埃及语写的铭文是在公元前3400年左右。它们也是已知最古老的圣书体文本。没