fbpx
维基百科

符号表

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

实现

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

使用

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

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

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

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

示例

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

Example table
地址 类型 名称
00000020 a T_BIT
00000040 a F_BIT
00000080 a I_BIT
20000004 t irqvec
20000008 t fiqvec
2000000c t InitReset
20000018 T _main
20000024 t End
20000030 T AT91F_US3_CfgPIO_useB
2000005c t AT91F_PIO_CfgPeriph
200000b0 T main
20000120 T AT91F_DBGU_Printk
20000190 t AT91F_US_TxReady
200001c0 t AT91F_US_PutChar
200001f8 T AT91F_SpuriousHandler
20000214 T AT91F_DataAbort
20000230 T AT91F_FetchAbort
2000024c T AT91F_Undef
20000268 T AT91F_UndefHandler
20000284 T AT91F_LowLevelInit
200002e0 t AT91F_DBGU_CfgPIO
2000030c t AT91F_PIO_CfgPeriph
20000360 t AT91F_US_Configure
200003dc t AT91F_US_SetBaudrate
2000041c t AT91F_US_Baudrate
200004ec t AT91F_US_SetTimeguard
2000051c t AT91F_PDC_Open
2000059c t AT91F_PDC_DisableRx
200005c8 t AT91F_PDC_DisableTx
200005f4 t AT91F_PDC_SetNextTx
20000638 t AT91F_PDC_SetNextRx
2000067c t AT91F_PDC_SetTx
200006c0 t AT91F_PDC_SetRx
20000704 t AT91F_PDC_EnableRx
20000730 t AT91F_PDC_EnableTx
2000075c t AT91F_US_EnableTx
20000788 T __aeabi_uidiv
20000788 T __udivsi3
20000884 T __aeabi_uidivmod
2000089c T __aeabi_idiv0
2000089c T __aeabi_ldiv0
2000089c T __div0
200009a0 D _data
200009a0 A _etext
200009a0 D holaamigosh
200009a4 A __bss_end__
200009a4 A __bss_start
200009a4 A __bss_start__
200009a4 A _edata
200009a4 A _end

参见

  • Debug symbol

符号表, 此條目没有列出任何参考或来源, 2014年3月5日, 維基百科所有的內容都應該可供查證, 请协助補充可靠来源以改善这篇条目, 无法查证的內容可能會因為異議提出而移除, 在计算机科学中, 是一种用于语言翻译器, 例如编译器和解释器, 中的数据结构, 在中, 程序源代码中的每个标识符都和它的声明或使用信息绑定在一起, 比如其数据类型, 作用域以及内存地址, 目录, 实现, 使用, 示例, 参见实现, 编辑散列表是用来实现的一种常用技术, 编译器可能会使用一个很大的来包含所有的符号, 或是针对不同的作用域使用层. 此條目没有列出任何参考或来源 2014年3月5日 維基百科所有的內容都應該可供查證 请协助補充可靠来源以改善这篇条目 无法查证的內容可能會因為異議提出而移除 在计算机科学中 符号表是一种用于语言翻译器 例如编译器和解释器 中的数据结构 在符号表中 程序源代码中的每个标识符都和它的声明或使用信息绑定在一起 比如其数据类型 作用域以及内存地址 目录 1 实现 2 使用 3 示例 4 参见实现 编辑散列表是用来实现符号表的一种常用技术 编译器可能会使用一个很大的符号表来包含所有的符号 或是针对不同的作用域使用层次结构的多个独立的符号表 使用 编辑目标文件中通常会有一个包含了所有外部可见标识符的符号表 在链接不同的目标文件时 链接器会使用这些文件中的符号表来解析所有未解析的符号引用 符号表可能只存在于翻译阶段 也可能被嵌入到该阶段的输出文件中 以供后续阶段使用 比如 它可用于交互式的调试器中 也可以在程序执行过程中或结束后提供格式化的诊断报告 在逆向工程中 许多工具会通过符号表来检查全局变量和已知函数的地址 如果可执行文件的符号表被strip这样的工具去除掉了 则逆向工程会更加困难 在进行动态内存分配和变量访问时 编译器需要完成许多工作 其中扩展的栈模型就需要用到符号表 示例 编辑下图是一个小程序的符号表 该表是用GNU Binutils中的nm工具生成的 其中有一个数据类型符号 由类型 D 表明 和许多函数 自己定义的以及标准库中的 第一列是每个符号在内存中的位置 第二列是 符号类型 页面存档备份 存于互联网档案馆 而第三列则是符号名称 通过传递适当的参数 可以按照地址顺序生成该符号表 Example table 地址 类型 名称00000020 a T BIT00000040 a F BIT00000080 a I BIT20000004 t irqvec20000008 t fiqvec2000000c t InitReset20000018 T main20000024 t End20000030 T AT91F US3 CfgPIO useB2000005c t AT91F PIO CfgPeriph200000b0 T main20000120 T AT91F DBGU Printk20000190 t AT91F US TxReady200001c0 t AT91F US PutChar200001f8 T AT91F SpuriousHandler20000214 T AT91F DataAbort20000230 T AT91F FetchAbort2000024c T AT91F Undef20000268 T AT91F UndefHandler20000284 T AT91F LowLevelInit200002e0 t AT91F DBGU CfgPIO2000030c t AT91F PIO CfgPeriph20000360 t AT91F US Configure200003dc t AT91F US SetBaudrate2000041c t AT91F US Baudrate200004ec t AT91F US SetTimeguard2000051c t AT91F PDC Open2000059c t AT91F PDC DisableRx200005c8 t AT91F PDC DisableTx200005f4 t AT91F PDC SetNextTx20000638 t AT91F PDC SetNextRx2000067c t AT91F PDC SetTx200006c0 t AT91F PDC SetRx20000704 t AT91F PDC EnableRx20000730 t AT91F PDC EnableTx2000075c t AT91F US EnableTx20000788 T aeabi uidiv20000788 T udivsi320000884 T aeabi uidivmod2000089c T aeabi idiv02000089c T aeabi ldiv02000089c T div0200009a0 D data200009a0 A etext200009a0 D holaamigosh200009a4 A bss end 200009a4 A bss start200009a4 A bss start 200009a4 A edata200009a4 A end参见 编辑Debug symbol 取自 https zh wikipedia org w index php title 符号表 amp oldid 70797817, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。