论文部分内容阅读
嵌入式系统硬件平台灵活多变、研发周期短的特点给系统开发人员带来了巨大的挑战。编译器是进行嵌入式系统软件开发的基础,快速地获得一个针对特定嵌入式系统硬件平台的编译器对于缩短研发周期意义重大。 本文研究嵌入式系统编译器的快速生成方法。以编译器GCC为研究对象,基于多目标编译器设计方法,将GCC移植到一种嵌入式系统Nios上。这种手工移植方法简单,但工作量大、开发周期长。因此本文对基于体系结构描述语言(ADL)的编译器自动生成方法进行了研究,这种方法解决编译器的快速生成问题,但生成的编译器产生的代码质量不高。综合手工移植和自动生成编译器两种方法的优点,提出了一种将含有代码优化过程的多目标编译器和编译器自动生成相结合的新的编译器设计方法。该方法利用体系结构描述语言描述目标平台的硬件信息,根据这些信息自动生成一个多目标编译器所需要的机器描述,从而将此编译器移植到目标平台上。其中体系结构描述语言选用Sim-nML语言,自动生成工具选择与之相应的IR-Generator和genmd。在此基础上,对机器描述生成器genmd进行了深入分析。针对其不支持跳转类指令的缺陷,利用自动机理论对指令识别和机器描述生成部分进行建模,提出了一种改进方案,并对源程序做了相应的修改。 本文分别对手工移植GCC到Nios系统的工作和对genmd在跳转类指令方面的改进方案进行了测试。实验结果表明:手工移植的GCC能够将较简单的C程序正确编译为汇编程序,而改进后的genmd能够对跳转类指令生成正确的机器描述。通过分析和比较手工移植和自动移植方法,说明编译器自动生成方法确能更快速地为新的目标系统生成相应的编译器,更好地满足嵌入式系统要求。