符号表

✍ dations ◷ 2024-12-23 10:23:26 #编译器软件,数据结构

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

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

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

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

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

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

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

相关

  • 妊娠并发症妊娠并发症(Complications of pregnancy)是有关妊娠的健康问题。在分娩时出现的并发症一般会称为是分娩并发症(英语:obstetric labor complication),在分娩之后的称为产褥期疾病(英
  • 心肌病变心肌病变(英语:cardiomyopathy)是一组会影响心肌之疾病的通称。早期的症状可能很轻微,甚至没有症状。有些会是因为心脏衰竭而有呼吸困难、容易疲倦或脚部水肿的情形,可能会有心律
  • 头孢布烯头孢布烯(英文:Ceftibuten) 是第三代头孢菌素抗生素。它是一种口服给药药剂,有两种类型,分别为胶囊或口服悬浮液。它是由Pernix Therapeutics以Cedax的商品名销售。头孢布烯用
  • 微小噬菌体科微小噬菌体属 Microvirus 螺旋体微小噬菌体属 Spiromicrovirus 蛭弧菌微小噬菌体属 Bdellomicrovirus 衣原体微小噬菌体属 Chlamydiamicrovirus
  • 辛明辛明(1950年-),中国男性演员,河南省郑州市人。辛明年轻时受父亲辛静(电影演员,1981年电影《西安事变》杨虎城扮演者)影响,中学毕业后,开时学习表演话剧。1978年出演电影《风雨里程》。
  • 黎世序黎世序(1772年-1824年2月20日),初名承惠,字湛溪,又字湛谿、景和。河南省汝宁府罗山县人,清朝政治人物、水利学家、经学家。谥襄勤。由于治水有功,同治时敕封为孚惠黎河神。嘉庆元年(1
  • ATC代码 (L)ATC代码L(抗肿瘤药及免疫制剂)是解剖学治疗学及化学分类系统的一个分类,这是由世界卫生组织药物统计方法整合中心(The WHO Collaborating Centre for Drug Statistics Methodolo
  • 内森·瑞克内森·瑞克(英语:Nathan Rich,1982年2月13日-),网名火锅大王,美国作家以及山达基批评者,出生于洛杉矶,犹太人,青年时期曾在美国多次犯罪被捕,后来把自己的经历编写成册在亚马逊售卖(),书于
  • a Boy〜一直无法忘怀〜黄金(日本唱片协会)当周排行第2名(ORICON)《a Boy〜一直无法忘怀〜》,是日本乐团GLAY的第10张单曲。
  • 卡洛·佐科卡洛·佐科(意大利语:Carlo Zocchi;1894年-1965年), 是意大利著名画家, 活性 科莫湖, 的科莫湖最美丽的地方之一.