一种用于执行Java虚拟机的指令的方法和设备。该方法包括:提取Java类的方法的字节码,将字节码转换为第二代码,并且执行第二代码,其中,第二代码包含有关操作码处理程序的位置的信息并且使用16比特的存储元素,操作码处理程序执行与包含在字节码中的操作码对应的操作。
【技术实现步骤摘要】
根据本专利技术的方法和设备涉及执行Java虚拟机的指令,更具体地讲,涉及执行Java虚拟机的指令,在所述Java虚拟机中将在Java虚拟机中执行的字节码转换为使用16比特存储元素的第二代码,从而相当可观地提高执行指令的速度。
技术介绍
虽然Java编程语言自二十世纪九十年代中期出现以来已迅速地增长为标准的面向对象的编程语言,但是它具有几个缺点,包括比C编程语言或C++编程语言更低的执行速度。为了加速Java编程语言的执行,已开发了动态代码产生系统如采用实时(just-in-time,JIT)编译器的Java虚拟机,和静态代码产生系统如采用提前(ahead-of-time,AOT)编译器的Java虚拟机。Java平台包括Java虚拟机和多个类。每个类包括与该类的数据结构对应的信息、字段(field)信息和方法信息。方法的执行码被写入独立于硬件装置或操作系统的字节码中。传统的Java虚拟机根据其各自的执行引擎可被分类为解释程序型Java虚拟机、JIT编译器型Java虚拟机、解释程序-JIT编译器型Java虚拟机、和AOT编译器型Java虚拟机。解释程序型Java虚拟机逐个地解释将要执行的方法的多个字节码,并且执行该方法的应用程序。JIT编译器型Java虚拟机将方法的字节码编译以获得取决于Java平台的机器码,并且执行该机器码从而执行该方法的应用程序。图1是示出传统Java类文件的结构的图。参照图1,Java类文件包括类或接口定义,并且包含定义在类中的不同属性、字段信息、方法信息等等。方法信息定义字节流,所述字节流被称为字节码并且可在解释程序中执行。此字节码可由编译包含Java源语言语句的文件(如具有“Java”扩展名的文件)获得。由于字节码在计算机内逐字节地执行,所以字节码与准备执行的程序模块相似。然而,字节码的指令是传送到逻辑和抽象的Java虚拟机的实际指令。字节码可由JIT编译器重新编译从而字节码能够与特定的系统平台兼容。这也确保一次一个字节地解释字节码,从而加快Java程序的执行速度。图2示出将在传统的Java虚拟机中执行的字节码。参照图2,字节码的指令包括操作数和操作码,其两者都具有一个字节大小以区分执行的操作。一个操作码可包括数个操作数。操作码和每个操作数都以一个字节单元存储,从而它们表示为连续的字节以用来表示具有一个或多个字节大小的操作数。例如,16比特值包含两个连续的字节,而32比特值包含四个连续的字节。在图2中,第一行表示实际字节码(actual bytecode)的十六进制值,而第二行表示被分成操作码和操作数的字节码。图3是用于解释执行每个由传统Java解释程序执行的指令代码的方法的流程图。应用类由Java虚拟机的类装入程序装入并且经过链接过程和初始化过程,然后关联信息被存储在运行时系统(runtime system)内的数据结构中,而且方法由执行引擎如解释程序或JIT编译器执行。在典型的解释程序中,字节码以图3所示的方式执行。当在解释程序中调用方法时,指示方法的字节码的程序计数器增加(S310)。其次,确定方法的字节码是否是最后的字节码(S320)。如果确定方法的字节码不是最后的字节码(在操作S320中的“否”),则取出一字节操作码(S330)。随后,使用程序中的切换语句控制移至与取出的一字节操作码对应的处理程序(S340),以执行该处理程序(S350)。根据字节码的大小将此过程重复所需要的次数,然后终止用于该方法的解释过程。在图5中所示的过程可用以下伪码来表示Loop{Op= *pc++; switch(Op){case op_1//op_1的实现break;case op_2//op_2的实现break;case op_3//op_3的实现break;…}在各操作码的处理程序中,如果操作码需要的操作数的数据大小大于一个字节,则操作数的值存储在连续的字节中。这样,连续的字节根据每个比特通过OR运算符和位移运算符被重构到一个有效值中。例如,在使用LittleIndian格式的中央处理单元(CPU)中,如果特定操作码A需要的操作数在随后的字节byte1、byte2、byte3和byte4中,则byte4表示被逻辑指示的32比特值的第一比特至第八比特,byte3表示被逻辑指示的该32比特值的第九比特至第十六比特,byte2表示被逻辑指示的该32比特值的第十七比特至第二十四比特,byte1表示被逻辑指示的该32比特值的第二十五比特至第三十二比特。因此,该操作码A实际需要的该32比特值可由操作如“(byte1<<24)|(byte2<<16)|(byte3<<8)|byte4”获得。在现有的Java虚拟机中,每当执行方法时就发生用于结合这样的操作数的过程。对于操作数来说,当操作数的数据大小大于一个字节时,操作数将布置在连续的字节中,并且每当执行方法时,该连续的字节根据每个比特通过OR运算符和位移(Shift)运算符被重构。当执行Java程序时,此过程可作用可观的开销。因此,需要通过克服这些约束来提高Java虚拟机的性能。
技术实现思路
本专利技术提供一种用于执行Java虚拟机的指令的方法和设备,在所述方法和设备中,可通过在字节码的解释之前执行用于将字节码转换为使用16比特存储元素的第二代码的预计算操作来提高执行Java程序的速度。本专利技术还提供一种用于执行Java虚拟机的指令的方法和设备,在所述方法和设备中,字节码被转换为使用16比特存储元素的第二代码,从而与字节码至需要大存储容量的代码的转换相比可观地减少开销。根据本专利技术的一个方面,提供了一种执行Java虚拟机的指令的方法,该方法包括提取Java类的方法的字节码;将字节码转换为第二代码,其中,第二代码包含有关操作码处理程序的位置的信息并且使用16比特的存储元素,操作码处理程序执行与包含在字节码中的操作码对应的操作;和执行第二代码。根据本专利技术的另一个方面,提供了一种Java虚拟机,该Java虚拟机包括字节码提取单元,提取Java类的方法的字节码;第二代码转换单元,将字节码转换为第二代码,其中第二代码包含有关操作码处理程序的位置的信息并且使用16比特的存储元素,操作码处理程序执行与包含在字节码中的操作码对应的操作;和指令执行单元,用于执行第二代码。附图说明通过下面结合附图,详细地描述示例性实施例,本专利技术的上述和其他目的和特点将会变得更加清楚,其中图1是示出传统Java类文件的结构的图;图2示出将在传统的Java虚拟机中执行的字节码;图3是示出执行每个由传统Java解释程序执行的指令代码的方法的流程图;图4是本专利技术示例性的实施例的Java虚拟机的方框图;图5是示出由图4所示的Java虚拟机执行指令的方法的流程图;图6是示出图5所示的将字节码转换为第二代码的操作的流程图;图7是示出本专利技术示例性的实施例的将字节码转换为第二代码的方法的流程图;图8是示出本专利技术另一示例性的实施例的将字节码转换为第二代码的方法的流程图;图9是示出本专利技术另一示例性的实施例的将字节码转换为第二代码的方法的流程图;和图10是示出本专利技术示例性的实施例的操作码处理程序偏移-操作码表的格式的图。具体实施例方式通过参照以下示例性实施例的详细描述和附图,可以更容易地理解本专利技术的优点本文档来自技高网...
【技术保护点】
一种执行Java虚拟机的指令的方法,该方法包括:提取Java类的方法的字节码;将字节码转换为第二代码,其中,第二代码包含有关操作码处理程序的位置的信息并且使用16比特的存储元素,操作码处理程序执行与包含在字节码中的操作码对应 的操作;和执行第二代码。
【技术特征摘要】
KR 2005-4-21 10-2005-00332351.一种执行Java虚拟机的指令的方法,该方法包括提取Java类的方法的字节码;将字节码转换为第二代码,其中,第二代码包含有关操作码处理程序的位置的信息并且使用16比特的存储元素,操作码处理程序执行与包含在字节码中的操作码对应的操作;和执行第二代码。2.如权利要求1所述的方法,其中,第二代码的执行包括将第二代码链接到运行时状态;初始化链接的结果为可执行;和执行初始化的结果。3.如权利要求2所述的方法,其中,第二代码的链接包括参照包含有关操作码处理程序的位置的信息和与操作码处理程序对应的操作码的表来验证第二代码。4.如权利要求1所述的方法,其中,有关操作码处理程序的位置的信息是操作码处理程序的偏移。5.如权利要求1所述的方法,其中,字节码的转换包括将字节码的操作数转换为使用16比特的存储元素的第二操作数,其中所述操作数包含至少一个字节。6.如权利要求5所述的方法,其中,字节码的操作数的转换包括将字节码的操作数向左位移两比特。7.如权利要求1所述的方法,其中,字节码的转换包括通过结合构成字节码的操作数的连续的字节将字节码的操作数转换为使用16比特存储元素的第二操作数。8.如权利要求7所述的方法,其中,字节码的操作数的转换包括通过使用OR操作和位移操作的至少一个操作结合构成字节码的操作数的连续的字节;和将结合的结果向左位移两比特。9.如权利要求7所述的方法,其中,如果字节码的操作数是偏移,则第二操作数通过将偏移与基地址相加获得。10.如权利要求1所述的方法,其中,如果字节码的操作码使用宽操作数,则字节码的转换包括转换操作码而不使用宽操作数。11.一种Java虚拟机,包括字节码提取单元,提取Java类的方法的字节码;第二代码转换单元,将字节码转换为第二代码,其中第二代码包含有关操作码...
【专利技术属性】
技术研发人员:罗曼洛夫斯基亚历克赛,
申请(专利权)人:三星电子株式会社,
类型:发明
国别省市:KR[韩国]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。