符号表

✍ dations ◷ 2025-10-17 00:50:05 #编译器软件,数据结构

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

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

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

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

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

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

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

相关

  • 气体分压气体分压(英语:partial pressure)指的是当气体混合物中的某一种组分在相同的温度下占据气体混合物相同的体积时,该组分所形成的压力。比如将一瓶空气中的氮气、二氧化碳和稀有气
  • 詹姆斯·普雷斯科特·焦耳詹姆斯·普雷斯科特·焦耳,FPS,ForMemRS,HonFRS(英语:James Prescott Joule,1818年12月24日-1889年10月12日),英国物理学家。在研究热的本质时,发现了热和功之间的转换关系,并由此得到
  • 原子轨道线性组合原子轨域线性组合(Linear combination of atomic orbitals,或者简写为LCAO),是量子化学中用于求解分子轨域的一种方法,这种方法是通过对原子轨域进行线性叠加来构造分子轨域。因
  • 蚁科参见亚科列表(英语:List of ant subfamilies)蚂蚁,古代又称马蚁或馬螘,蚂蚁是一种真社会性的昆虫,属于膜翅目 (Hymenoptera) 蚁科(Formicidae),膜翅目的其他昆虫有胡蜂、黄蜂等。最
  • 黄斑黄斑(Macula lutea,源自拉丁语macula,“斑”+lutea,“黄”),是人眼视网膜中央附近一卵圆形染色区域,直径约5.5mm。黄斑还可再细分为黄斑凸、黄斑凹、黄斑凹无血管区(foveal avascula
  • 明定国是诏《明定国是诏》又称《定国是诏》,根据《清实录》记载是光绪二十四年四月乙已日即公元1898年6月11日清朝光绪帝所颁布的诏书,标志着戊戌变法的开始 。“明定国是”意为明确国策
  • 桑顿市桑顿(英语:Thornton, Colorado)是美国科罗拉多州的一个城市,位于州府丹佛以北。行政上大部分属于亚当斯县,余属韦尔德县。面积70.4平方公里,2006年人口109,155人,是该州第六大城市
  • 中国共产党中央政治局(1994年增选,上海市市长至1995年,1994年兼上海市委书记) · 尉健行(中央书记处书记、中央纪委书记,1995年兼北京市委书记至1997年) · 谢 非(广东省委书记) · 谭绍文(1993年逝世)温家
  • 尼古拉·亚历山德罗维奇 (俄国)尼古拉·亚历山德罗维奇(俄语:Никола́й Алекса́ндрович,1843年9月20日-1865年4月24日),俄罗斯皇储。从1855年3月2日起为俄罗斯皇位继承人直至1865年去世为
  • 森彻森彻(日语:森徹,1935年11月3日-2014年2月6日),出身于北海道函馆市的日本棒球选手。曾效力于日本职棒中日龙等队伍,于1968年退休,生涯通算189支本垒打。50 小鹤诚 | 51 青田昇 | 52