论文部分内容阅读
编译系统是任何计算机系统中不可缺少的重要部分。但是编译系统的研制因其技术复杂、难度较高而需要投入较多的人力、物力和花费较长的研制周期。过去编译系统的研制均是针对某一种程序设计语言和某一种目标机而专门编写的。随着计算机的飞速发展,这种传统的方法已经很难满足需要。进入八十年代后期,随着国外各种软件公司的兴起以及各种计算机芯片不断推陈出新,研制支持多目标机的编译系统越来越显得重要,编译程序的开发者们认识到只有既支持多语种又支持多目标机的编译系统才具有生命力和竞争价值。这种系统实际上是开发编译程序的基础平台,它采用的技术代表着编译技术的发展方向。GNU CC是这种支持多语种、多目标机编译系统中最有代表性的一个系统。它目前已支持的语言有C、C++、Objective C、FORTRAN、ADA;已移植的平台有一百多种,涉及三十多种处理机,六十多种系统。GNU CC之所以有如此广泛的移植和使用,其原因除了它的源代码公开之外,更重要的原因应归于其独特的结构。其清晰的前端语法树结构、高度概括的抽象机中间语言、简洁有力的后端机器描述等三部分为快速实现多语种开发、多平台移植提供了有力的支持。目前,浙江大学信息与通信工程研究所正在进行32位多媒体数字信号处理器(命名为MD-32) 的软硬件开发。由于GNU CC的这种优点,我们选择它对新目标机进行移植。本文作为前导性的尝试,提出一个简单的处理器模型subDLX,通过对subDLX目标机重写机器描述,实现了GCC的成功移植。为以后实现对MD-32移植GCC打下来了基础。在实践过程中我们发现,GCC看似庞大复杂,其实内部结构清晰,技术成熟,它不仅可用来作为开发新语言编译程序或移植至新目标机的基础,同时还可以用于进行新编译技术,如面向新体系结构的优化技术研究与实验。此外,我们借助GCC编译过程中产生的中间代码RTL(Register Transfer Language)文件,重写目标代码生成和优化功能程序,为新的目标机器开发C语言编译器。这个方法不要求程序员精通GCC,能够快速的进入编译器的开发,缩短项目开发周期,理论上可以得到一个更高效的编译器。