上海交通大学硕士学位论文 JAVA字节码的部分计值技术及正确性研究姓名:拜朝峰申请学位级别:硕士专业:计算机软件与理论指导教师:黄林鹏 20040101 硕士学位论文 JAVA字节码的部分计值技术及正确性研究摘要部分计值又称程序例化特化是一种源程序到源程序的代码转换技术在给定部分输入参数的情况下对程序进行转换约简完成程序中只依赖于给定参数的计算而产生剩余程序当剩余程序作用在其余的参数时产生与原来程序作用在全部参数一样的结果作为代码转换研究领域的一个分支它能够从程序运行环境和程序自身所包含的已知条件自动对程序进行例化生成效率更高的程序代码早期的部分计值研究工作主要是针对函数式语言和逻辑语言第一批关于命令式语言部分计值的论文是由Ershov发表的他使用Algol-68 语言的一个子集对部分计值做了探讨此后陆续又有一些论述命令式语言部分计值理论的论文发表其中Uwe Meyer开发了一个Pascal 语言的子集的在线部分计值器,并对部分计值器如何构造和证明其正确性做了论述面向对象语言是现在主流的程序设计语言也成为了部分计值研究的一个新的领域 Java语言是一种非常优秀的面向对象程序设计语言它不依赖机器的体系结构和操作系统具有可移植性但Java语言是解释执行的Java源程序首先要编译成Java虚拟机指令编写的字节代码程序然后再由Java虚拟机来解释执行所以执行速度要比编译执行的C++ 之类的语言慢一个数量级如今许多公司都致力于改进Java编译系统尤其是Java虚拟机的工作以改善Java程序执行速度慢的缺点例如即时编译技术JIT和Hotspot编译系统这些技术对Java 硕士学位论文的性能有了很大的改善但这些优化技术针对的是Java虚拟机的运行方式字节代码程序的效率并没有提高部分计值技术作为代码转换技术的一种可以提高程序本身的效率所以我们选择使用部分计值技术来提高Java程序的执行效率本文主要包括四部分内容我们在第一部分对部分计值技术进行了简要概述介绍了部分计值技术的理论基础和研究现状以及应用在第二部分我们介绍了Java虚拟机的体系结构和Java语言部分计值研究的发展现状对比了本文所述的工作与其它Java部分计值工作的区别第三部分是本文的重点我们选择Java字节码程序作为部分计值研究的对象首先按照Java语言的特性把Java分为了五个层次命名为Java I Java CJava OJava E和Java T 然后我们分析了由 Java I程序编译得到的JVML I字节码程序的指令序列结构定义了 JVML I字节码程序的指称语义并在此基础上形式化的提出了JVML I 程序的部分计值规则然后定义了部分计值正确性的含义并使用归纳法证明了这些计值规则的正确性本文的最后一部分简单讨论了 JVML C JVML O JVML E和JVML T的部分计值由于引入了面向对象和异常处理特别是线程机制的思想研究语言语义的难度就迅速增大该部分的研究工作还在继续进行主要是使用抽象状态机 ASM,Abstract State Machine [25]来刻划Java虚拟机及其运行时数据区然后定义语义和部分计值的规则最后证明部分计值的正确性关键字部分计值Java虚拟机Java字节码正确性硕士学位论文 RESEARCH ON PARTIAL EVALUATION ON JAVA BYTE CODE AND ITS CORRECTNESS ABSTRACT Partial evaluation is a source-to-source program transformation technique. When given a program and only some of its input data, the partial evaluator will finish putation as much as possible and produce a so-called residual program. Running the residual program on the remaining input will yield the same result as running the original program on all of its input data. As a special case of program transformation, partial evaluation emphasizes automatically specializing a program and generating more efficient code according to the known conditions implied in