符号表

✍ dations ◷ 2025-11-27 22:30:42 #编译器软件,数据结构

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

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

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

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

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

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

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

相关

  • 刻板印象刻板印象(亦称印刻作用,英语:stereotype),是一个社会学术语,专指人类对于某些特定类型人、事或物的一种概括的看法,看法可能是来自于同一类型的人事物之中的某一个个体给旁人的观感
  • 过热蒸汽过热蒸汽,或称过热水蒸气(英语: Superheated steam),是温度高于水的沸点的蒸汽。饱和蒸汽在常压下加热时,温度持续升高,而产生过热蒸汽。饱和蒸汽表面存在的较高温度的蒸汽,因其温
  • 左营区坐标:22°41′13.54″N 120°17′30.67″E / 22.6870944°N 120.2918528°E / 22.6870944; 120.2918528左营区(台湾话:.mw-parser-output .sans-serif{font-family:-apple-syst
  • 那卡西那卡西是一种源自日本的卖唱模式,乃日文“流し”的音译,卖唱者如同水一般流动,在各个旅馆、餐厅、夜总会之间或替客人伴奏、或接受客人点歌演唱,故而称之。那卡西的表演型态多半
  • D·汤普森戴维·汤普森(英语:David Thompson,1954年7月13日-)是美国NBA联盟的前职业篮球运动员。
  • 圣安吉洛圣安吉洛(San Angelo)是美国的一座城市。位于德克萨斯州中西部的汤姆格林县。据2010年美国人口普查,圣安吉洛有人口93,200,圣安吉洛都市区有人口111,823人。
  • 木浦木浦市(朝鲜语:목포시/木浦市 Mokpo si */?)是韩国全罗南道的一座港口城市,位于黄海沿岸。韩国海军在此设有军港设施和航空基地。
  • Game OverGame Over(游戏结束)是电子游戏在一场游戏结束时出现的画面文字。Game Over主要以部分的Nitrome游戏出现一句,但出现“Level Failed”字样表示Nitrome的赛车游戏。同时,也有OutR
  • 保罗·苏埃雷布保罗·苏埃雷布(Pawlu "Paul" Xuereb,1923年7月21日-1994年9月6日) ,1986年7月至1987年2月期间担任马耳他众议院议长,自1987年2月16日至1989年4月4日期间任马耳他代总统。他就读
  • 赤子岩赤子岩(あかごいわ)是对那些流传有婴儿相关传说的岩石总称。日本各地都存在有赤子岩,多半有只要向其许愿就能治好婴儿或幼童夜哭症的共通点。