符号表

✍ dations ◷ 2025-11-17 19:48:01 #编译器软件,数据结构

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

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

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

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

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

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

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

相关

  • 帕克斯电视网艾恩电视台(英语:Ion Television)是一家美国无线电视网,为艾恩传媒网络公司拥有。
  • 水生动物水生动物是指在水中度过一生或一生大部分时间在水中度过的脊椎动物或无脊椎动物。如蚊、蜉蝣、蜻蜓、石蛾等均有水生幼体及有翅膀的成虫。水生动物可能具有直接呼吸空气的能
  • 罗马诺·普罗迪罗马诺·普罗迪(意大利语:Romano Prodi,1939年8月9日-),意大利政治家,曾经两度出任意大利总理,曾经担任欧盟委员会主席。普罗迪从政前曾经在博洛尼亚大学担任教授多年。2011年11月16
  • 国际水域公海,又称国际水域或国际公海,是指非属于任何一个国家领海的海域。根据国际海洋法公约及1958年的公海公约,公海既然不属于任何国家,故任何国籍的船舶均有航行权,对于公海中非所属
  • 豆芽菜豆芽是豆科的作物种子浸水后发芽的产品,用来做蔬菜供人食用。最常见的为绿豆,称为绿豆芽。也有黄豆芽、豌豆芽、蚕豆芽、苜蓿芽等。豆芽生产不需要土地、农具,只需要充足的水就
  • 周丙荣周丙荣(1861年-1915年),字子善,江苏省通州直隶州如皋县人,清朝政治人物、同进士出身。光绪二十一年(1895年),参加光绪乙未科殿试,登进士三甲119名。同年五月,著交吏部掣签分发各省,以知
  • 维克多·德·萨巴塔维克多·德·萨巴塔(Victor de Sabata,1892年4月10日-1967年12月11日)是一位意大利指挥家和作曲家。萨巴塔是一位合唱指挥之子。他受教于米兰音乐学院,在米雪·萨拉丁诺底下学习
  • 坝兰河坝兰河位于中华人民共和国云南省南部,是泗南江右岸支流,上游称牛红河,发源于红河哈尼族彝族自治州红河县垤玛乡牛红村委会腊约村东南的阿期大梁子阿尼山北麓,蜿蜒西北流经垤玛乡
  • 任天堂Switch游戏列表任天堂Switch是任天堂出品的电子游戏机,支持实体和数字版游戏。实体版游戏载体为卡带,数字版游戏由任天堂eShop销售,储存在32 GB内建储存器或microSD卡中。任天堂Switch不再锁
  • 新德山冷泉新德山冷泉(Sindoksan Natural Mineral Water):位于北朝鲜的平安南道之“龙冈郡”境内的“新德山”(Mountain Sindok),最高峰处为412米,山里尽是多层的花岗岩,从深1,000米的花岗