符号表

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

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

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

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

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

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

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

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

相关

  • 替诺福韦替诺福韦二吡呋酯(英语:Tenofovir disoproxil),商品名韦瑞德(英语:Viread)惠立妥或其它,是一种用于治疗慢性乙肝以及预防和治疗HIV感染/艾滋病的药物。这种药物属于逆转录酶抑制剂,可
  • 东斯拉夫民族主要分布国家: 白俄罗斯、俄罗斯、乌克兰 次要分布国家:东斯拉夫人(白俄罗斯语:Усходнія славяне;俄语:Восточные славяне;乌克兰语:Східні
  • 冰球冰球自1920年夏季奥运会起成为奥运会比赛项目之一。1924年改为冬季奥运会项目。1998年开始,女子冰球也加入到奥运会项目中。最初加拿大是冰球超级强国,在7届男子冰球比赛中夺
  • 靛青蓼蓝(学名:Polygonum tinctorium),亦略称为蓝或靛青,为蓼科一年生的草本植物。主要用作蓝染(日语:藍染め)及药用。蓼蓝植株高约50公分到80公分,叶互生,卵形或椭圆形,叶下表面沿叶脉常有
  • 加央加央(马来语:Kangar)是一个位于马来西亚半岛北部的市镇,是玻璃市州的首府。加央市内有许多地标及休闲区,其中有金禧交通圈(Bulatan Jubli Emas)、大钟楼、拿督锡阿末广场(Dataran Da
  • 法经《法经》是战国时期魏国李悝制定,为中国最早的一部初具体系的法典,成为以后历代法典的蓝本。《法经》的原文已失传,根据后来文献记载,法经共有六篇,即盗法、贼法、囚(或网)法、捕法
  • 爱德华·莫泽爱德华·莫泽(挪威语:Edvard Moser,1962年4月27日-),挪威心理学家、神经科学家,挪威科技大学卡夫利系统神经科学研究所和记忆生物学中心(英语:Kavli Institute for Systems Neuroscie
  • 深中路深中路(Shenzhong Rd.)是高雄市燕巢区的东西向重要干道,本道路亦经深水地区、高应大及高师大燕巢校区,属台22线旗楠公路。起端衔接深兴路,末端于高师大路口续接深水路往里岭大桥
  • 威廉·戈德曼威廉·戈德曼(英语:William Goldman,1931年8月12日-2018年11月16日)是一位美国小说作者、剧作者和影视编剧。他在1950年代以写小说成名,之后转向电影剧本创作。戈德曼两次因剧本赢
  • 小米辣小米辣(学名:)又名小米椒、鸡嘴椒、辣虎等,为茄科辣椒属的植物。分布在印度、欧洲、南美以及中国大陆的云南等地。本种可能是普通辣椒()的同物异名。小米辣是低矮的灌木,最高可达两