符号表

✍ dations ◷ 2025-11-24 20:43:34 #编译器软件,数据结构

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

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

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

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

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

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

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

相关

  • 分割谬误分割谬误(Division Fallacy)是一种非形式谬误,是基于整体拥有某性质,而推论其中的部分或全部个体都具备该性质,这是一种以全概偏。相对地则有合成谬误:某物的某部分具有某性质,故某
  • 回火回火(Tempering)是在冶金学当中,一种改善金属材料性质的热处理技术。回火是将淬火钢加热到奥氏体转变温度以下的适当温度,保持高温加热1到2小时后冷却。经过回火,钢的结构趋于稳
  • 吹哨者吹哨人(英语:Whistleblower,中文译名有告密者、告密人、吹哨者、举报者、揭黑幕者、揭弊者、扒粪者、弊端揭发人等,粤语称笃灰)指的是揭露一个组织(无论其是私有还是公共的)内部非
  • 死亡圣神死亡圣神(西班牙语:Santa Muerte,或西班牙语:Santísima Muerte,即是英语:Saint Death)是在墨西哥被敬奉的一种圣像,可能是产生于中美洲传统信仰与民间天主教信仰混杂之后的结果。它
  • 花莲港花莲港,位于台湾花莲县花莲市,为台湾的国际商港之一。东临太平洋,西倚中央山脉,是一个由东、西防波堤合拢而成的人工港。1939年兴建完成,民国52年9月1日(1963年)开放为国际商港,成立
  • 布哈拉汗国坐标:39°46′40″N 64°24′39″E / 39.77778°N 64.41083°E / 39.77778; 64.41083布哈拉(乌兹别克语:Buxoro)是位于乌兹别克斯坦西南部的一座城市,也是该国第五大城市和布哈拉
  • 气态巨行星气态巨行星(gas giant、类木行星)是主要由氢和氦组成的巨行星。太阳系的木星和土星是气态巨行星。“气态巨行星”起初原本是“巨行星”的代名词(同义词),但是1990年代学界意识到
  • 摩尔门经《摩尔门经》(英语:)耶稣基督后期圣徒教会的四部标准经文之一。接受启示翻译此书的约瑟.斯密称之为“全世界最正确的一本书”,并见证摩尔门经是“我们宗教的拱心石”,摩尔门经在18
  • 伊尔马里·尤蒂莱宁第二次世界大战埃伊诺·伊尔马里·尤蒂莱宁(芬兰语:Eino Ilmari Juutilainen,1914年2月21日-1999年2月21日)是一名芬兰空军飞行员,也是至今除德国外空战击坠数最高的王牌飞行员。
  • 国际民主和选举援助学会国际民主和选举援助学会(International Institute for Democracy and Electoral Assistance)是一个在拉丁美洲地区(哥斯达黎加)、亚洲及太平洋地区(澳大利亚)和非洲地区(埃塞俄比亚