符号表

✍ dations ◷ 2025-12-06 09:30:46 #编译器软件,数据结构

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

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

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

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

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

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

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

相关

  • 鼻烟鼻烟(英语:Snuff),一种无烟烟草制品。把烟草研磨成极细的粉末,以嗅闻的方式吸取进入鼻腔,经由鼻腔吸收其中的尼古丁成分。其中可以加入麝香等药材,或用花卉等提炼。烟味分五种:膻、
  • 交子交子,是中国北宋时四川省流通的纸币,是世界上最早“正式”发行的钞票。交子是古代四川省的俚语,其中“交”是“双面印刷”的意思,词语的意思解释为双面印刷的票券或凭证。交子又
  • 卵黄动脉卵黄动脉(vitelline arteries)是人体胚胎的动脉之一,是对应卵黄静脉(英语:vitelline veins)的动脉。卵黄动脉在卵黄循环(英语:vitelline circulation)中重要的部分,提供卵黄囊的血液。
  • 克雷白氏杆菌克雷伯氏菌属(学名:Klebsiella)是肠杆菌目肠杆菌科的一属,为革兰氏阴性菌,杆状,其中包括了人类感染症常见的克雷伯氏肺炎菌(Klebsiella pneumoniae)。克雷伯氏菌属的命名,是纪念德
  • EViewsEViews是为Windows设计的统计分析软件,主要应用于计量经济分析。 EViews是由Quantitative Micro Software(QMS)开发的。1.0版于1994年3月推出,代替了原先的MicroTSP软件,目前最新
  • 硫酰氯硫酰氯是硫酸的两个-OH基团被氯替代后形成的化合物,分子式为SO2Cl2,为无色有强烈刺鼻气味的液体,在潮湿空气中发烟。它用作有机化学中的氯化试剂,可以将烷烃、烯烃、炔烃及芳香
  • 1824年美国总统选举1824年美国总统选举在1824年10月26日到1824年12月2日期间举行。约翰·昆西·亚当斯在1825年2月9日最终当选为第六任美国总统,但亚当斯并不是当时得票最多的总统候选人,当时安
  • 阿尔伯特·布鲁尔阿尔伯特·布鲁尔(英语:Albert Preston Brewer,1928年10月26日-2017年1月2日),是一名美国政治家,曾在1968年5月7日至1971年1月18日期间,担任美国阿拉巴马州州长。布鲁尔出生于田纳西
  • 主妇联合会主妇联合会(日语:主婦連合会)是在1948年成立后,日本主要的消费者团体之一。日本“主妇联合会”的起源是日本妇女为了抗议二次大战后日本在黑市、通膨、还有日常用品和食品品质低
  • 峇眼拿督县峇眼拿督县(马来语:Daerah Bagan Datuk),是马来西亚霹雳州东南部的一个县,其面积为950平方公里,2016年人口为70,300。该县顺时针起被下霹雳县、马登巴冷县、慕亚林县、雪兰莪州沙