论文部分内容阅读
本课题的主要目的是设计一个优化的小型C编译器,它能在Linux操作系统下工作,将标准C代码编写的源程序翻译成一种自定义的虚拟机语言,并且能够执行出正确结果。OCCL是 Optimizing C Compiler for Linux的头字母缩略语。选择此课题的原因主要有下面几个。首先,编译器是一个相当复杂又非常重要的程序。通过一个C编译器开发程序的探索,将会对编译的各个环节有深刻的理解。另外,C是一种常用的过程式语言,当前对象式语言的载体基本上是过程式的,因此掌握类似的C等过程式语言的编译技术,不难实现对象式语言的编译程序。最后,我们最终实现的目标代码是基于一个自定义的虚拟机器VMC的代码,通过对此代码的解释执行来得到最终运行结果。这个技术可以保证OCCL编译器基于平台的无关性。 OCCL编译器设计的是三遍完成。第一遍用于词法分析和语法分析;第二遍用于语义分析和中间代码生成;第三遍用于目标代码生成和结果执行。这样整体程序设计结构清晰,便于实现优化措施,目标代码质量高。最后实现的OCCL编译器,对属于我们选择的ANSI C语言集合里的程序代码能够进行正确的编译。同时,在实现的每一步中,都尽量<WP=4>应用一些新思想,新方法,使OCCL编译器有自己的特色。例如,在符号表设计过程中,采用分离层次的杂凑表这一数据结构来实现,提高了编译器的查找速度。在生成目标代码时,采用的方法是先生成虚拟机代码,再对虚拟机代码进行解释执行得出最终运行结果。这样就便于OCCL编译器的在不同目标机器上的移植了。