22、高级语言编译技术与程序优化指南

高级语言编译技术与程序优化指南

1. 加载器与内存控制

在程序处理的第二阶段,加载器会将所有目标文件中的符号表合并成一个大表,然后编辑目标文件,把相对地址转换为实际地址。这通常通过汇编器在目标文件中写入额外的位来实现,以此识别引用标签的指令和字段。若在合并后的符号表中找不到某个标签,该标签即为未定义,系统会向用户发送错误消息。

在嵌入式系统中,控制代码模块加载到内存的位置至关重要。像用于管理中断的数据结构和指令,必须放置在精确的内存位置才能正常工作。此外,不同类型的内存可能安装在不同的地址范围。例如,若部分位置使用 EPROM,其他位置使用 DRAM,就需要确保可写位置被放置在 DRAM 区域。

工作站和 PC 提供动态链接库,一些嵌入式计算环境也可能提供。动态链接库允许在程序执行开始时链接常用的例程(如 I/O),而不是为系统中的每个可执行程序都链接一个单独的副本。在程序执行前会进行一个简短的链接过程,动态链接器使用代码库来链接所需的例程。这不仅节省了存储空间,还便于更新使用这些库的程序,但会在程序开始执行前引入一定的延迟。

2. 基本编译技术

理解高级语言程序如何转换为指令非常有用。在实现嵌入式计算系统时,通常需要控制处理中断的指令序列、数据和指令在内存中的放置等,了解编译器的工作原理有助于判断何时不能完全依赖编译器。而且,由于许多应用对性能敏感,了解代码生成方式有助于实现性能目标,既可以编写能编译成所需指令的高级代码,也可以在必要时编写自己的汇编代码。

编译过程结合了翻译和优化。高级语言程序被翻译成低级形式的指令,优化则尝试生成比直接翻译源代码语句更好的指令序列。优化技术会考虑更多的程序内容,以确保对某一语句看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值