CN100573454C - 用于执行java虚拟机的指令的方法和设备 - Google Patents
用于执行java虚拟机的指令的方法和设备 Download PDFInfo
- Publication number
- CN100573454C CN100573454C CNB2006100724102A CN200610072410A CN100573454C CN 100573454 C CN100573454 C CN 100573454C CN B2006100724102 A CNB2006100724102 A CN B2006100724102A CN 200610072410 A CN200610072410 A CN 200610072410A CN 100573454 C CN100573454 C CN 100573454C
- Authority
- CN
- China
- Prior art keywords
- code
- bytecode
- operand
- virtual machine
- java virtual
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
一种用于执行Java虚拟机的指令的方法和设备。该方法包括:提取Java类的方法的字节码,将字节码转换为第二代码,并且执行第二代码,其中,第二代码包含有关操作码处理程序的位置的信息并且使用16比特的存储元素,操作码处理程序执行与包含在字节码中的操作码对应的操作。
Description
本申请要求于2005年4月21日在韩国知识产权局提交的第10-2005-0033235号韩国专利申请的优先权,该申请全部公开于此以资参考。
技术领域
根据本发明的方法和设备涉及执行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是示出本发明示例性的实施例的操作码处理程序偏移-操作码表的格式的图。
具体实施方式
通过参照以下示例性实施例的详细描述和附图,可以更容易地理解本发明的优点和特征和实现本发明的方法。但是,本发明能够以许多不同的形式实施并且不应该仅仅被解释为限于在此阐述的示例性实施例。相反地,提供这些示例性实施例是为了使此公开详细和完整并且使之向本领域的技术人员充分地传达本发明的思想,而且本发明仅仅由所附权利要求限定。在说明书全文中,同样的标号表示同样的元件。
以下,参照附图来更详细地说明本发明的示例性实施例。
图4是本发明的示例性实施例的Java虚拟机400的方框图。
参照图4,本发明的示例性实施例的Java虚拟机400包括字节码提取单元420、第二代码转换单元430、链接单元440、初始化单元450和指令执行单元460。
字节码提取单元420从装入到Java虚拟机400中的类410提取方法的字节码并且将该字节码提供给第二代码转换单元430。
第二代码转换单元430将以八比特单元写入的字节码转换成为使用16比特存储元素的第二代码。字节码至第二代码的转换可包括将字节码的操作码转换为16比特操作码处理程序偏移;和,如果操作码包括操作数,则通过适当地结合(combine)操作数的比特来将16比特操作码处理程序偏移转换为16比特或32比特索引或存储地址。字节码至第二代码的转换将参照图6至图10给予更为详细的描述。
链接单元440执行链接操作,所述链接操作包括转换成的第二代码的验证、准备及分析,并且将链接操作的结果结合为Java虚拟机400的运行时状态。
初始化单元450通过执行静态初始化程序和对于在类410中声明的静态字段的初始化程序来将链接的第二代码初始化。解释程序型Java虚拟机逐个地解释将执行的方法的多个字节码,并且执行该方法的应用程序。
指令执行单元460解释并执行初始化操作的结果。在本发明的一个示例性实施例中,指令执行单元460可以是解释程序。在本发明的另一个示例性实施例中,指令执行单元460可以是编译器。JIT编译器型Java虚拟机编译该方法的字节码来依照Java平台获得机器码,并且执行机器码以执行该方法的应用程序。
如在图4中使用的术语“模块”是,但不限于,软件或硬件部件,诸如现场可编程门阵列(FPGA)或专用集成电路(ASIC),其执行特定的任务。模块可方便地配置为常驻在可寻址的存储介质上并且配置为在一个或多个处理器上执行。在组件和模块中提供的功能可以结合在更少的组件和模块中或进一步分离到额外的组件和模块中。另外,可实现组件和模块以使它们执行在通信系统中的一个或多个计算机。
图5是示出由图4所示的Java虚拟机执行指令的方法的流程图。
参照图4和图5,当类410由类装入程序装入到Java虚拟机400中时,字节码提取单元420从类410提取用于执行方法的字节码(操作S510)。第二代码转换单元430将提取的字节码转换为使用16比特存储元素的第二代码(操作S520)。链接单元440对第二代码执行链接操作并且将链接操作的结果结合到Java虚拟机400的运行时状态(操作S530)。这里,链接操作包括验证、准备和分析。初始化单元450通过执行静态初始化程序和用于在类410中声明的静态字段的初始化程序初始化链接的第二代码(操作S540)。指令执行单元460将初始化的第二代码翻译或编译为机器语言然后执行机器语言(操作S550)。
现在参照图6更为详细地描述字节码至第二代码的转换(图5的操作S520)。
如以上参照图2所描述,字节码包括操作数和操作码。字节码以下述的方式转换为第二代码。
一字节(八比特)操作码被关联操作码处理程序的16比特偏移代替(操作S610)。执行关联操作码功能的操作码处理程序的存储地址可通过将预定的基地址与偏移值相加获得。因此,如果第二代码由解释程序或编译器执行,则处理程序的存储地址可直接从操作码处理程序偏移获得,从而程序移至与一字节操作码对应的处理程序而不需要执行图3所示的解释程序循环中的switch语句,因而缩短了Java程序的执行时间。
其次,确定操作码是否包括操作数(操作S620)。如果操作码包括操作数(在操作S620中的“是”),则一字节操作数被转换为16比特操作数。例如,一字节操作数被转换为带符号或无符号字然后在第二代码中以16比特打包。字节码中的两字节操作数被转换为带符号或无符号字然后在第二代码中以两个连续的16比特打包。字节码中的四字节操作数被转换为带符号或无符号字然后在第二代码中被作为包含四个连续的16比特的操作数打包。
再次,确定操作数是否是索引(操作S630)。当一字节操作数被转换为16比特操作数时,操作数可以是索引也可以是偏移值。在前者的情形中(在操作S630中的“是”),索引被转换从而与16比特存储元素兼容(操作S640)。在本发明中,使用16比特存储元素,因此第二代码的索引值通过将索引向左位移两比特产生。稍后将参照图7更为详细地描述具有索引作为操作数的字节码的转换的例子。
在后者的情形中(操作S630中的“否”),偏移值与预定的基地址相加以被转换为32比特存储地址(操作S650)。稍后将参照图8和图9更为详细地描述具有作为操作数的偏移值的字节码的转换的例子。
翻译和执行第二代码的过程可以用伪码表示如下:
nop_label:
++pc;goto*(nop_label+pc[0]);
aconst_null_label:
*sp=0;
++sp;
++pc;goto*(nop_label+pc[0]);
...
//其它操作码处理程序
在Java虚拟机操作中的链接过程(图5的操作S530)是将第二代码结合到使用二进制型类或接口型类的Java虚拟机的运行时状态的过程。在本示例性实施例中,将链接过程描述为在字节码的执行前或字节码的执行中执行。
在本示例性实施例中,字节码至第二代码的转换在第二代码的验证之前完成。因此,第二代码的验证是考虑到第二代码指令的布局及指令操作数的转换和预计算而完成。在第二代码的验证中可使用处理程序偏移-操作码查找表以确定什么操作码被验证。稍后将参照图10详细描述处理程序偏移-操作码查找表的格式。
图7是示出本发明的示例性实施例的将字节码转换为第二代码的方法的图。
参照图7,包括八比特操作码710和八比特操作数即局部变量索引720的字节码指令,如“aload”或“astore”,被转换为包括16比特操作码处理程序偏移730和16比特操作数740的第二代码。如果目标处理器仅仅提供字节-寻址模式,则16比特操作数740可具有向左位移两比特的局部变量索引。
图8是示出本发明另一示例性实施例的将字节码转换为第二代码的方法的图。
参照图8,包含八比特操作码810和包括第一和第二分支偏移820和830的两字节操作数的字节码指令,如“goto”或“if”,被转换为包括三个16比特元素的第二代码。该三个16比特元素包括16比特操作码处理程序偏移840和32比特分支地址850,该32比特分支地址850在字节码指令的执行中使用。
可包含八比特操作码和包括两个字偏移的两字节操作数的字节码指令,例如,“getfield_qucik”或“putfield_quick”,也可以被转换为包括三个16比特元素的第二代码。该三个16比特元素可包括操作码处理程序偏移和包括两个16比特元素的32比特字段偏移。如果目标处理器仅仅提供字节-寻址模式,则操作数的16比特元素可包括向左位移两比特的32比特字段偏移。
宽操作指令,例如,“goto_w”或“jsr_w”,包含八比特操作码和四字节操作数。字节码至第二代码的转换并不区分标准的操作和宽操作。因此,宽操作指令的八比特操作码被用于标准操作指令(如“goto”)的处理程序偏移代替,而且对于四字节操作数两个连续的16比特元素被使用来产生32比特操作数。
尽管例证性的实施例已表明第二代码的操作数是32比特地址,但是对于本领域的技术人员来说,很明显地,对应的字节码的偏移可以被结合以被转换为32比特偏移值而不在实质上脱离本发明的精神。
图9是示出本发明另一示例性的实施例的将字节码转换为第二代码的方法的流程图。
参照图9,包含N字节的字节码指令“tableswitch”,可以被转换为始于16比特处理程序偏移910的第二代码指令。用于32比特数组的选择性填充930跟随16比特操作码处理程序偏移910。标记为LOWER LIMIT ADDRESS1和LOWER LIMITADDRESS 2的下限地址960通过将下限字节950与缺省字节940相加来产生,其中下限字节950标记为LOWER LIMIT BYTE 1至LOWER LIMIT BYTE 4并且缺省字节940标记为DEFAULT BYTE 1至DEFAULT BYTE 4,而标记为UPPER LIMIT ADDRESS 1和UPPER LIMITADDRESS 2的上限地址980通过将上限字节970与缺省字节940相加来产生,其中上限字节970标记为UPPER LIMIT BYTE 1至UPPER LIMIT BYTE 4。字节码指令“tableswitch”的标记为BRANCH OFFSET 1_1至BRANCHOFFSETN_4的每四个连续的分支偏移990,被转换为32比特分支地址995,所述分支地址995标记为BRANCH ADDRESS 1_1至BRANCH ADDRESSN_2。
尽管例证性的实施例已表明第二代码的操作数是32比特的地址,但是对于本领域的技术人员来说,很明显地,对应的字节码的偏移可以被结合以被转换为32比特偏移值而不在实质上脱离本发明的精神。
图10是示出本发明示例性的实施例的操作码处理程序偏移-操作码表的格式的图。
参照图10,Java虚拟机对于预定的指令有时使用操作码。在这种情况下,可使用在图10示出的处理程序偏移-操作码查找表来方便地查找预定的偏移对应的操作码。处理程序偏移-操作码查找表分别地提供多个操作码处理程序偏移和各自对应的操作码作为索引和数组元素。
为了就第二代码计算栈图(stack map),Java虚拟机扫描第二代码指令。在扫描操作期间,可使用处理程序偏移-操作码查找表。
如上所述,根据本发明,可以提高执行Java程序的速度,同时与字节码到需要大存储容量的代码的转换相比,相当可观地减少与存储容量的增加相关的开销。
虽然参照示例性实施例具体地就本发明做了描述和说明,但本领域的技术人员能够明白,在不脱离在权利要求中限定的本发明范围的情况下,可以对其进行各种形式和细节上的修改。因此,需要明白,上述的示例性实施例仅仅是在描述性的意义上提供而不能被理解为在发明的范围上设定任何限制。
Claims (18)
1、一种执行Java虚拟机的指令的方法,该方法包括:
提取Java类的方法的字节码;
将包括在字节码中的操作码转换为使用16比特的存储元素的第二代码;和
执行第二代码,
其中,将所述字节码中的操作码转换为自预定基地址的操作码处理程序偏移。
2、如权利要求1所述的方法,其中,还包括:
将第二代码链接到运行时状态;和
初始化链接的结果为可执行,
其中,所述执行第二代码的步骤执行初始化的结果。
3、如权利要求2所述的方法,其中,第二代码的链接包括参照包含操作码处理程序偏移和与操作码处理程序对应的操作码的表来验证第二代码。
4、如权利要求1所述的方法,其中,字节码的转换包括将字节码的操作数转换为使用16比特的存储元素的第二操作数,其中所述操作数包含至少一个字节。
5、如权利要求4所述的方法,其中,字节码的操作数的转换包括将字节码的操作数向左位移两比特。
6、如权利要求1所述的方法,其中,字节码的转换包括通过结合构成字节码的操作数的连续的字节将字节码的操作数转换为使用16比特存储元素的第二操作数。
7、如权利要求6所述的方法,其中,字节码的操作数的转换包括:
通过使用OR操作和位移操作的至少一个操作结合构成字节码的操作数的连续的字节;和
将结合的结果向左位移两比特。
8、如权利要求6所述的方法,其中,如果字节码的操作数是偏移,则第二操作数通过将偏移与基地址相加获得。
9、如权利要求1所述的方法,其中,如果字节码中的操作码使用宽操作数,则所述字节码的转换包括不使用宽操作数地转换操作码。
10、一种Java虚拟机,包括:
字节码提取单元,提取Java类的方法的字节码;
第二代码转换单元,将包括在字节码中的操作码转换为使用16比特的存储元素的第二代码;和
指令执行单元,用于执行第二代码,
其中,第二代码转换单元将所述字节码中的操作码转换为自预定基地址的操作码处理程序偏移。
11、如权利要求10所述的Java虚拟机,还包括:
链接单元,将第二代码链接到运行时状态中;和
初始化单元,初始化链接的第二代码为可执行。
12、如权利要求10所述的Java虚拟机,其中,链接单元参照包含操作码处理程序偏移和与操作码处理程序对应的操作码的表来验证第二代码。
13、如权利要求10所述的Java虚拟机,其中,第二代码转换单元将字节码的操作数转换为使用16比特的存储元素的第二操作数。
14、如权利要求10所述的Java虚拟机,其中,第二代码转换单元将字节码的操作数向左位移两比特。
15、如权利要求10所述的Java虚拟机,其中,第二代码转换单元通过结合构成字节码的操作数的连续的字节将字节码的操作数转换为使用16比特存储元素的第二操作数。
16、如权利要求10所述的Java虚拟机,其中,如果字节码的操作数是偏移,则第二操作数通过将偏移与基地址相加获得。
17、如权利要求10所述的Java虚拟机,其中,第二代码转换单元使用OR操作和位移操作的至少一个操作结合构成字节码的操作数的连续的字节,并且将结合的结果向左位移两比特。
18、如权利要求10所述的Java虚拟机,其中,如果字节码中的操作码使用宽操作数,则第二代码转换单元不使用宽操作数地转换操作码。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020050033235A KR100763177B1 (ko) | 2005-04-21 | 2005-04-21 | 자바 가상 머신의 명령어 수행 방법 및 그 장치 |
KR1020050033235 | 2005-04-21 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1855053A CN1855053A (zh) | 2006-11-01 |
CN100573454C true CN100573454C (zh) | 2009-12-23 |
Family
ID=37195240
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100724102A Expired - Fee Related CN100573454C (zh) | 2005-04-21 | 2006-04-11 | 用于执行java虚拟机的指令的方法和设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7725879B2 (zh) |
JP (1) | JP2006302272A (zh) |
KR (1) | KR100763177B1 (zh) |
CN (1) | CN100573454C (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7693887B2 (en) | 2005-02-01 | 2010-04-06 | Strands, Inc. | Dynamic identification of a new set of media items responsive to an input mediaset |
KR100678912B1 (ko) * | 2005-10-18 | 2007-02-05 | 삼성전자주식회사 | 메소드 바이트코드 해석 방법 및 상기 방법에 의해동작하는 시스템 |
KR101407629B1 (ko) * | 2007-06-04 | 2014-06-13 | 더 보드 오브 리젠츠 오브 더 유니버시티 오브 텍사스 시스템 | 자바 변환 가속 장치 및 방법 |
US9164783B2 (en) * | 2007-08-20 | 2015-10-20 | International Business Machines Corporation | Load time resolution for dynamic binding languages |
KR100936401B1 (ko) * | 2007-10-17 | 2010-01-12 | 주식회사 에이디칩스 | 자바 바이트코드 변환방법 |
KR100930831B1 (ko) * | 2009-03-24 | 2009-12-10 | 주식회사 에이디칩스 | 바이트코드 변환 가속 장치 및 그 방법 |
US9152437B2 (en) * | 2010-10-28 | 2015-10-06 | Hewlett-Packard Development Company, L.P. | Dynamically installing image processing |
US10466989B2 (en) | 2011-09-02 | 2019-11-05 | Microsoft Technology Licensing, Llc. | Fast presentation of markup content having script code |
US10481876B2 (en) | 2017-01-11 | 2019-11-19 | Microsoft Technology Licensing, Llc | Methods and systems for application rendering |
CN110675256B (zh) * | 2019-08-30 | 2020-08-21 | 阿里巴巴集团控股有限公司 | 部署和执行智能合约的方法及装置 |
US10783082B2 (en) | 2019-08-30 | 2020-09-22 | Alibaba Group Holding Limited | Deploying a smart contract |
CN112052433B (zh) * | 2020-08-05 | 2024-05-07 | 北京智游网安科技有限公司 | 一种Jar文件的虚拟化保护方法、终端及存储介质 |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08286911A (ja) * | 1995-04-11 | 1996-11-01 | Mitsubishi Electric Corp | 機械語命令翻訳方法 |
US7137107B1 (en) * | 2003-04-29 | 2006-11-14 | Roy-G-Biv Corporation | Motion control systems and methods |
US5887172A (en) * | 1996-01-10 | 1999-03-23 | Sun Microsystems, Inc. | Remote procedure call system and method for RPC mechanism independent client and server interfaces interoperable with any of a plurality of remote procedure call backends |
US5875335A (en) * | 1996-09-30 | 1999-02-23 | Apple Computer, Inc. | Parameter marshaling techniques for dynamic object-oriented programming languages |
US6139199A (en) * | 1997-06-11 | 2000-10-31 | Sun Microsystems, Inc. | Fast just-in-time (JIT) scheduler |
US6154877A (en) * | 1997-07-03 | 2000-11-28 | The University Of Iowa Research Foundation | Method and apparatus for portable checkpointing using data structure metrics and conversion functions |
US6233733B1 (en) * | 1997-09-30 | 2001-05-15 | Sun Microsystems, Inc. | Method for generating a Java bytecode data flow graph |
JP3377419B2 (ja) * | 1997-11-11 | 2003-02-17 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 命令列生成方法及び装置、変換方法、及びコンピュータ |
US6081665A (en) * | 1997-12-19 | 2000-06-27 | Newmonics Inc. | Method for efficient soft real-time execution of portable byte code computer programs |
US6282698B1 (en) * | 1998-02-09 | 2001-08-28 | Lucent Technologies Inc. | Detecting similarities in Java sources from bytecodes |
US6011918A (en) * | 1998-04-22 | 2000-01-04 | International Business Machines Corporation | Methods, systems and computer program products for generating client/server applications |
US6324688B1 (en) | 1998-07-30 | 2001-11-27 | International Business Machines Corporation | Method and apparatus for optimizing execution of Java programs |
US6205578B1 (en) * | 1998-08-14 | 2001-03-20 | Ati International Srl | Interpreter for stack-based languages |
US6256784B1 (en) * | 1998-08-14 | 2001-07-03 | Ati International Srl | Interpreter with reduced memory access and improved jump-through-register handling |
US6332216B1 (en) * | 1999-03-09 | 2001-12-18 | Hewlett-Packard Company | Hybrid just-in-time compiler that consumes minimal resource |
JP2000311089A (ja) * | 1999-04-28 | 2000-11-07 | Nec Corp | インタプリタの高速化方法ならびに装置 |
US6484312B1 (en) * | 1999-06-07 | 2002-11-19 | Microsoft Corporation | Inferring operand types within an intermediate language |
JP2001056764A (ja) | 1999-08-18 | 2001-02-27 | Access:Kk | 仮想計算機の実行方法および装置 |
GB9920676D0 (en) * | 1999-09-01 | 1999-11-03 | Tao Group Ltd | Translating and executing object-oriented computer programs |
US6560774B1 (en) * | 1999-09-01 | 2003-05-06 | Microsoft Corporation | Verifier to check intermediate language |
DE10104043A1 (de) * | 2000-02-23 | 2001-08-30 | Ibm | Die Schaffung der Möglichkeit, dass vorhandene Anwendungen andere Sprachen als ihre eingebauten Makrosprachen benutzen, ohne die vorhandene Anwendung zu ändern |
US6865730B1 (en) * | 2000-03-08 | 2005-03-08 | International Business Machines Corporation | Interprocedural analysis and optimization of an object oriented program in the presence of dynamic class loading |
US6775680B2 (en) * | 2000-08-08 | 2004-08-10 | International Business Machines Corporation | High level assembler metamodel |
US6993751B2 (en) * | 2001-05-14 | 2006-01-31 | Microsoft Corporation | Placing exception throwing instructions in compiled code |
JP2003050844A (ja) | 2001-08-03 | 2003-02-21 | Jamsea Mutual Aid Co Ltd | 適任性等照会システム |
US7058934B2 (en) * | 2001-08-24 | 2006-06-06 | Sun Microsystems, Inc. | Frameworks for generation of Java macro instructions for instantiating Java objects |
JP4234976B2 (ja) * | 2001-10-31 | 2009-03-04 | 株式会社アプリックス | 中間コード実行システム |
JP2003216443A (ja) * | 2002-01-25 | 2003-07-31 | Hitachi Ltd | 中間コード実行装置および方法 |
JP4032822B2 (ja) * | 2002-05-20 | 2008-01-16 | 日本電気株式会社 | アセンブラプログラムのためのアドレス記述変換システム及びプログラム |
JP4093810B2 (ja) * | 2002-05-31 | 2008-06-04 | 三洋電機株式会社 | 冷却貯蔵庫 |
US20040088703A1 (en) * | 2002-11-05 | 2004-05-06 | Nedim Fresko | Mechanism for implementing an interpreter with hierarchical execution loops |
KR20040068653A (ko) * | 2003-01-27 | 2004-08-02 | 삼성전자주식회사 | 자바 기반의 스마트카드에서의 실행속도 향상 장치 |
KR100506522B1 (ko) * | 2003-02-24 | 2005-08-03 | 삼성전자주식회사 | 자바 프로그램에서 바이트 코드의 컴파일 시간 단축시스템 및 방법 |
US7120898B2 (en) * | 2003-06-26 | 2006-10-10 | Microsoft Corporation | Intermediate representation for multiple exception handling models |
US7434209B2 (en) * | 2003-07-15 | 2008-10-07 | Transitive Limited | Method and apparatus for performing native binding to execute native code |
US7225037B2 (en) * | 2003-09-03 | 2007-05-29 | Unitronics (1989) (R″G) Ltd. | System and method for implementing logic control in programmable controllers in distributed control systems |
US7287243B2 (en) * | 2004-01-06 | 2007-10-23 | Hewlett-Packard Development Company, L.P. | Code verification system and method |
KR100643268B1 (ko) * | 2004-01-17 | 2006-11-10 | 삼성전자주식회사 | 자바 가상 머신의 성능을 향상시키는 방법 및 상기 방법에의해 동작되는 시스템 |
US7574692B2 (en) * | 2004-11-19 | 2009-08-11 | Adrian Herscu | Method for building component-software for execution in a standards-compliant programming environment |
-
2005
- 2005-04-21 KR KR1020050033235A patent/KR100763177B1/ko not_active IP Right Cessation
-
2006
- 2006-04-07 JP JP2006106637A patent/JP2006302272A/ja active Pending
- 2006-04-11 CN CNB2006100724102A patent/CN100573454C/zh not_active Expired - Fee Related
- 2006-04-11 US US11/401,403 patent/US7725879B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
KR20060110971A (ko) | 2006-10-26 |
JP2006302272A (ja) | 2006-11-02 |
US20060253847A1 (en) | 2006-11-09 |
KR100763177B1 (ko) | 2007-10-04 |
CN1855053A (zh) | 2006-11-01 |
US7725879B2 (en) | 2010-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100573454C (zh) | 用于执行java虚拟机的指令的方法和设备 | |
CA2082065C (en) | Cross-image referencing of program code | |
US6438745B1 (en) | Program conversion apparatus | |
EP0529059B1 (en) | Branch resolution via backward symbolic execution | |
CN108681457B (zh) | 基于代码下沉与残码解释的Android应用程序保护方法 | |
EP0528028B1 (en) | Automatic flowgraph generation for program analysis and translation | |
US6275790B1 (en) | Introspective editor system, program, and method for software translation | |
US8863079B2 (en) | Efficient and expansive conversions between reference and primitive | |
EP1557760A2 (en) | Method and system for improving performance of java virtual machine | |
EP0848325A2 (en) | System, method and apparatus of directly executing an architecture independent binary program | |
JPH0628036B2 (ja) | シミュレーシヨン方法 | |
US7076765B1 (en) | System for hiding runtime environment dependent part | |
KR20040079851A (ko) | 직접 명령어 렌더링 에뮬레이션 컴퓨터 기술 | |
EP1438644A2 (en) | Method for fast compilation of preverified java bytecode to high quality native machine code | |
Lyu et al. | A procedure-based dynamic software update | |
CN100583030C (zh) | 一种risc处理器及其数据访存方法 | |
JP2014206948A (ja) | エントリーポイント抽出装置 | |
Dewar et al. | Micro Spitbol | |
JP6125865B2 (ja) | 情報処理装置、情報処理システム、および情報処理方法 | |
Gabbrielli et al. | Abstract Machines | |
CIRCUITS | Translating 8051 assembly code to XA | |
JP2007179221A (ja) | デバッガ | |
ED31 | Ground Operations Aerospace Language | |
Rohl | The influence of programming languages on the design of MU5 | |
Litteken | On the adaptability of multipass Pascal compilers to variants of (Pascal) P-code machine architectures |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20091223 Termination date: 20180411 |
|
CF01 | Termination of patent right due to non-payment of annual fee |