高级语言编译技术与程序优化指南
1. 加载器与内存控制
在程序处理的第二阶段,加载器会将所有目标文件中的符号表合并成一个大表,然后编辑目标文件,把相对地址转换为实际地址。这通常通过汇编器在目标文件中写入额外的位来实现,以此识别引用标签的指令和字段。若在合并后的符号表中找不到某个标签,该标签即为未定义,系统会向用户发送错误消息。
在嵌入式系统中,控制代码模块加载到内存的位置至关重要。像用于管理中断的数据结构和指令,必须放置在精确的内存位置才能正常工作。此外,不同类型的内存可能安装在不同的地址范围。例如,若部分位置使用 EPROM,其他位置使用 DRAM,就需要确保可写位置被放置在 DRAM 区域。
工作站和 PC 提供动态链接库,一些嵌入式计算环境也可能提供。动态链接库允许在程序执行开始时链接常用的例程(如 I/O),而不是为系统中的每个可执行程序都链接一个单独的副本。在程序执行前会进行一个简短的链接过程,动态链接器使用代码库来链接所需的例程。这不仅节省了存储空间,还便于更新使用这些库的程序,但会在程序开始执行前引入一定的延迟。
2. 基本编译技术
理解高级语言程序如何转换为指令非常有用。在实现嵌入式计算系统时,通常需要控制处理中断的指令序列、数据和指令在内存中的放置等,了解编译器的工作原理有助于判断何时不能完全依赖编译器。而且,由于许多应用对性能敏感,了解代码生成方式有助于实现性能目标,既可以编写能编译成所需指令的高级代码,也可以在必要时编写自己的汇编代码。
编译过程结合了翻译和优化。高级语言程序被翻译成低级形式的指令,优化则尝试生成比直接翻译源代码语句更好的指令序列。优化技术会考虑更多的程序内容,以确保对某一语句看
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



