符号表

✍ dations ◷ 2025-12-11 06:29:12 #编译器软件,数据结构

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

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

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

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

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

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

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

相关

  • 神经病学人体解剖学 - 人体生理学 组织学 - 胚胎学 人体寄生虫学 - 免疫学 病理学 - 病理生理学 细胞学 - 营养学 流行病学 - 药理学 - 毒理学神经内科(neurology)是医学的一个分支,专
  • 类白血病反应类白血病反应(英语:Leukemoid Reaction),是描述一类白细胞总量的增加、或白细胞增多症(英语:leukocytosis),其为一种因压力或感染而引起的生理反应,而非一种譬如白血病之类的血液癌症
  • 郑敾郑敾,({lang-ko|정선}},1676年-1759年),字元伯、号谦斋,本贯光州郑氏,朝鲜王朝中期画家:255:198,与尹斗绪(字恭斋)和沈师正(朝鲜语:심사정)(字玄斋)并称为“士人三斋”:255-258。郑敾是朝鲜
  • 隆都话广东省中山市沙溪、大涌、南蓢、三乡及火炬开发区等地;中山闽语是汉藏语系汉语族闽语支闽南语在广东省境内的一种方言,通行于古香山县之隆都、得能都、四大都、谷都和恭常都等
  • 2011 Big Show (现场专辑)《2011 Big Show Live Album》是韩国男子音乐组合BIGBANG推出的第五张韩语现场专辑,由YG娱乐制作发布,在2011年6月14日通过各大数字音乐网站公开线上音源,同年6月17日为实体专
  • 苏联自治共和国苏维埃社会主义自治共和国(俄语:Автономная Советская Социалистическая Республика,АССР)是苏联为了实现民族自治而成立的
  • 弗拉基米尔·安德烈耶维奇·斯捷克洛夫弗拉基米尔·安德烈耶维奇·斯捷克洛夫(俄语:Влади́мирАндре́евичСтекло́в)是一位俄国/苏联著名数学家暨物理学家。斯捷克洛夫于1864年1月9日出生
  • 穆罕默德·艾哈迈德·马赫迪穆罕默德·艾哈迈德·马赫迪(阿拉伯语:محمد أحمد ابن عبد الله‎,1844年8月12日-1885年6月22日;本名穆罕默德·艾哈迈德·本·阿卜杜拉,阿拉伯语:محمد أح
  • 亚当·涅梅茨亚当·涅梅茨(斯洛伐克语:Adam Nemec;1985年9月2日-)是一位斯洛伐克足球运动员。在场上的位置是前锋。他现在效力于荷兰足球甲级联赛球队威廉二世足球俱乐部。他也代表斯洛伐克国
  • 汪裕泰茶庄汪裕泰茶庄,是1847年至1953年存在的上海茶庄集团。1827年(清道光七年),汪裕泰创始人汪立政诞生于现安徽省绩溪县上庄镇余川村,名锡纯,字以德。1837年(道光十七年),北裕泰茶庄创立(汪裕