论文部分内容阅读
随着处理器技术的高速发展,编译优化的技术在现代处理器研究中表现出越来越重要的作用,因为合适的代码优化算法不仅可以产生高效率的目标代码,而且可以简化处理器的硬件控制机制。同时,新的语言特征和新的程序分析方法的出现,也使得编译器面临着新的挑战:需要适应新的语言特征,采用新的方法,提高代码的质量,同时也需要解决编译过程中出现的新问题。传统的过程内分析和优化是针对同一个过程内的对象,而过程间分析和优化处理将分析和优化的范围扩大到了整个程序。因为我们将考虑问题的范围扩大到了整个程序,所以能够获得的信息也就更多,但是处理的方法也更加的复杂。如何能够在各个过程之间找到相互关联的有用信息,并让编译器使用这些信息来改善代码的质量,需要用到完全不同于过程内优化的分析方法。本文首先对传统优化方式作了简单的介绍,并将传统的优化方式和过程间优化做了对比,接着介绍了过程间分析和优化技术所产生的冲击,给出我们研究的目的和方法。然后,我们对过程间分析和优化的一些经典的理论,包括调用图的构造,内联替换和过程克隆,过程间信息(副作用摘要集合,别名和过程间常量)作了介绍。接着,介绍了我们选择的研究平台SUIF2,因为它具有模块化的结构,能够给我们提供可扩展的程序表示,并且可以最大化提供代码的重用。利用SUIF2环境提供的模块和工具,我们实现了一个调用图的构造算法,并对算法做了验证。最后是本文的总结。过程间分析和优化的意义是很重大的,虽然过程间分析和优化的开销很大,但是它代表了一种编译器优化的方向和趋势。随着更成熟和更有效的过程间分析和优化方法的出现,将会有更多的编译器采用这个技术。