论文部分内容阅读
在嵌入式系统中,为了提高程序执行效率而代替高级语言片段使用的内嵌汇编严重影响了程序的可移植性和可读性。为了解决这种矛盾,本文借鉴了主流中间语言(如.net字节码和Java字节码)的概念和设计方法,设计了一种可以和高级语言混合使用的基于虚拟寄存器的中间语言(VR-IL,VirtualRegister-Intermediate Language)。这种中间语言可以高效的转换为机器语言,同时也可以支持多种目标机器语言。这样在保持汇编语言的执行效率的前提下解决了汇编语言的可移植性问题。本质上是以空间和运行时编译时间换取执行效率和可移植性。在语法层面上,VR-IL语言是一种构建在C语言函数基础上的程序设计语言,其语句均由实现特定功能的C语言函数表达,可以认为C语言函数是VR-IL语言的基本语法单位。在语义层面上,VR-IL语言的执行以生成中间代码为目的,按照在生成中间代码过程中的作用可以把VR-IL语句分为两类:直接生成中间代码语句和辅助生成中间代码语句。VR-IL语言的功能由中间代码来实现。VR-IL中间代码和物理指令存在映射关系,在形式上,类似物理指令,具有操作数和操作码,是物理指令的抽象。为了和物理指令区别,称VR-IL中间代码为虚拟指令。虚拟指令集被赋予了实现语言平台无关性的使命,及时编译器处理器相关层完成从虚拟指令到物理指令的映射,屏蔽了目标处理器指令系统的复杂细节,能够满足嵌入式系统多平台应用的需求。VR-IL的编译过程分为两阶段,首先由高级语言编译器执行静态编译,编译以后的VR-IL程序运行后生成VR-IL中间代码即VR-IL虚拟指令。然后由VR-IL及时编译器对中间代码执行动态编译,产生可供中间语言外部应用程序直接调用的目标机器代码,完成整个中间语言编译过程。本文实现了一个基本完整的程序语言系统,研究、实现了一些现代编译理论的算法。最后通过比较VR-IL、C和ARM内嵌汇编的执行时间证明了VR-IL的效率优势,说明VR-IL基本达到了设计目标。VR-IL不仅为提高高级语言应用程序的执行效率提供了一个解决方案,同时对研究学习现代编译器理论具有良好的参考价值。