论文部分内容阅读
在应用软件的开发中,虚拟机的概念对于解决软件开发中核心问题,如代码可维护性,系统健壮性,具有重要的指导性作用。不但在早期计算机的软硬件设计方面,起到核心作用,在现实的软件开发中,特别是嵌入式系统上,仍具有重要的指导性。同时由于虚拟机的复杂性,分析和实现虚拟机系统需要的文献资料和设计实例,不是缺少完整性,就是在对应联系方面缺少指导性。本论文着重解决此矛盾。虚拟机是解决计算机软件、硬件日益升级换代与应用开发及维护日益复杂的一种有效的解决方案。本文作为工科应用论文,实现了内核结构小巧且完整的栈式虚拟机,对虚拟机设计的算法和结构结合具体实例给出了完整的算法实现,同时提供了高级语言Csmart及其编译器,从而构成了一个有很好参考性的完整的虚拟机解决方案。虚拟机在实现的架构选择上,有两种实现方式,基于栈结构和基于寄存器结构,而这两种方式直接关系到虚拟指令系统的设计方式,栈结构对应于精简指令系统,而基于寄存器方式则对应复杂指令系统。由于栈式结构可以很容易实现CPU中通用寄存器的软件功能,从而使得虚拟机上的应用能更好的可移植性。本文将要介绍的虚拟机就是基于栈结构的虚拟机。通过对这两种实现方式的分析和研究,特别是对基于栈结构java虚拟机实现的研究,实现了一个基于栈结构的小巧但完整的虚拟机SVM(Stack-based virtual machine)。SVM的的核心设计部分,虚拟运行时系统和指令解析器部分的数据结构和算法上,化繁为简,图文并茂,条理突出,对虚拟机设计者提供很好的,在学术和实践方面有很强的参考性。同时,虚拟机需要一个高级语言和相应编译系统才能有效的开发应用。本文实现的虚拟机的高级语言为Csmart,其是抽取C语言的一个子集来定义的,易于理解,简单实用,不但增强SVM参考性,同时对于高级语言的编译和代码生成给出了简洁又不是完整的叙述。Csmat的编译器是采用递归下降的方式实现的。这种方式的创新点在于将Csmart程序的扫描分析(词法和语法)和代码生成在一次扫描中完成,可以将语言结构简单的Csmart有效的编译成机器码,而且实现编译器的代码量少且结构简单。通过一篇论文的篇幅介绍了一个小巧但功能完整的虚拟机系统,对于虚拟机设计和实现,编译原理的实践和研究都有具有很好的参考价值。