基于虚拟机的微型编译系统的研究和设计.pdfVIP

  • 5
  • 0
  • 约1.37万字
  • 约 8页
  • 2017-08-19 发布于安徽
  • 举报

基于虚拟机的微型编译系统的研究和设计.pdf

国防科技工业试验与测试技术高层论坛 基于虚拟机的微型编译系统的研究与设计 于永彦,朱德伦 (淮阴工学院计算机工程系,江苏淮安223001) 摘要:虚拟机可以解决不同网络平台之间的资源共享与信息传递,基于虚拟机技术的编译系统可以模拟远程硬件平台的 软件环境与编译功能,实现某种特殊需求,进而开发一种新的编程思想与模式.文章从基于面向对象的虚拟机出发,探讨设 计一种微型编译系统的理论基础与技术可行性,并实际给出一个编译器实例及与之对应的汇编语言指令系统. 关键词:面向对象;编译器;汇编语言;指令 1 引言 虚拟机的实质就是在源平台上通过软件构造出一个能够模拟目标硬件平台的仿真器,其核心是通过软 件技术对抽象机处理器进行模拟,是一种利用软件方式模拟计算机处理器工作机能的程序。当系统正确启 动之后,开始执行保存在可执行字节码文件里的指令。可执行字节码文件是一种二进制文件,文件里主要 是针对虚拟机运行时环境而设计的“机器指令”,只有虚拟机才能够了解这些指令的作用和相应的操作过 程。首先,虚拟机将从宿主操作系统的文件系统中读取目标字节码文件中的“机器指令”,并把这些指令 加载到虚拟机开辟出来的内存空间之中;然后,在加载“机器指令”之后作必要的指令检验工作;接着, 根据用户对运行时环境的要求,设定、构造并配置虚拟机的内存环境,初始化虚拟机系统的主要系统寄存 器;最后执行这些“机器指令”,并作相应的操作,直到处理器遇到停机指令。 2面向对象的虚拟机体系结构 虚拟机的灵魂是具备宽泛的高可移植性,在设计的时候使用软件的方式来管理虚拟机自己的内存空 间。在启动时向宿主操作系统系统申请一段内存空间,然后将这一段分配得到的线性内存空间构造出一个 人工设定的地址空间来给基于虚拟机运行时环境的应用程序在运行时使用。这个人工的地址空间将被分成 三段:一个正文段、一个数据段和一个堆栈段。 虚拟机模拟的“处理器”是基于寄存器的,拥有若干个寄存器,8个系统寄存器,包括:5个段寄存 寄存器;8个单精度浮点寄存器。在虚拟机的内存空间中的项部同时存在一个小型的堆栈,以方便实现应 用程序的上下文切换。为了方便那些在虚拟机平台上做程序设计开发的程序员了解虚拟机的运行时状态, 在虚拟机内部设置了一个32位的程序状态字。这样可以利用状态字来表示虚拟机在运行的遇到的各种情 况,比如程序运算时出现溢出状态等。 处理器的主要功能是运算。在虚拟机的处理器中,由于是软件模拟实现的,所以不可能真正的构造一 个非常的复杂的运算机构,而是直接运用高级程序设计语言中提供的运算功能来实现。其中,主要的运算 流程主要是: 1)通过设置程序状态字(PSW)打开虚拟机自身的“中断服务例程”: 2) 根据用户的需要,通过设置程序状态字(PSW)来决定是否打开Debug模式; 3) 从内存空间中读取一个机器指令; 4) 判断是否是停机指令。如果是,则跳转到第f步,否则继续; 5) 根据该指令的内容,执行相应的机器操作。跳转到第c步; 6) 根据从应用程序返回的值来判断程序运行是否成功; · · 163 7)将操作权返回操作系统。 整个处理器运算循环过程如图l所示。 作为一个平台,虚拟机同样需要具有中断机制。虚拟机依 赖于宿主操作系统来提供输入,输出等基本的服务,这样可以独 立于各个硬件平台,达到较好的移植性。虚拟机使用标准C,C++ 程序设计语言来基本的操作系统服务,如输入,输入机制、文件 输入/输出机制和内存管理机制等。当然,虚拟机有专门的中断 服务来完成对中断服务的分析和执行过程。 虚拟机要实现高可移植性,需要制作一个平台中立的内核 执行引擎。为此将运

文档评论(0)

1亿VIP精品文档

相关文档