智能卡运行环境的控制方法

文档序号:6623837阅读:144来源:国知局

专利名称::智能卡运行环境的控制方法
技术领域
:本发明涉及一种对智能卡运行环境进行控制的方法,具体地说,是指一种适用于Java平台智能卡运行环境的控制方法。
背景技术
:Java智能卡技术是Java虚拟机技术向有限资源设备平台的移植。Java智能卡的Applet经过编译和转换后生成虚拟机指令集的字节码程序。这些字节码再由卡上虚拟机来运行。Java虚拟机早期地运行技术主要是解释执行机制,即将字节码通过解释程序翻译为相应的本地执行代码来运行,它适合于在资源较少的设备中使用。而后,为了提高字节码的执行速度,又相继提出了编译为本地代码执行、动态编译和JIT编译执行、HotSpot技术及直接的专用硬件结构执行等运行技术。编译为本地代码的方法虽然显著地提高了速度,但却一定程度地影响了Java语言的安全机制和可移植性,这在高安全性要求的智能卡应用中显然并不适合。动态编译、JIT编译技术和HotSpot技术是在运行时将字节码编译为本地代码,这需要大量的运行时的存储资源,这在通常只有2K左右RAM的智能卡中也不具可行性。目前也有的采用专用的智能卡硬件结构来运行字节码以提高速度,这带来的性能增益是非常显著的,但同时也成倍地提高了卡片的成本。专用的硬件结构也具有一定的局限性,如伪指令的扩展,并且目前在智能卡芯片和其它的有限资源设备领域Java专用结构的CPU不能通用。
发明内容本发明的目的是提供一种智能卡运行环境的控制方法,该控制方法为了有效地提高应用程序的运行效率,在Java卡卡内、卡外虚拟机结构的基础上,运用字节码的指令折叠优化和解析优化方式,并设计出相应的虚拟机伪指令,从而缩减了智能卡上的代码空间,有效地提高了应用程序的运行速度。本发明的一种智能卡运行环境的控制方法,所述智能卡至少包括卡内虚拟机、卡外虚拟机,所述卡内虚拟机内设有解释器单元,所述解释器单元用于实现字节码序列的解析过程;所述卡外虚拟机内设有转换器单元,所述转换器单元用于实现字节码序列的转换过程,其字节码序列的处理步骤有(A)对所述转换器单元输出的字节码序列进行折叠类型分类,得到折叠类型;(B)对经(A)折叠分类处理后的所述折叠类型按照折叠规则进行指令折叠优化,得到优化后的指令折叠优化字节码序列;(C)对经(B)折叠处理后的所述指令折叠优化字节码序列输入所述解释器中进行解析类型分类,得到解析类型;(D)对经(C)解析分类处理后的所述解析类型按照解析规则进行指令解析优化,得到对象的物理地址。本发明智能卡运行环境的控制方法的优点(一)在智能卡的卡外虚拟机上采用指令折叠优化有效地提高了指令的执行速度和Java卡的响应速度,即指令的执行速度提高到原来的2.33倍,因此折叠优化明显加快了Java智能卡Applet的执行速度和响应速度;(二)在智能卡的卡内虚拟机上采用指令解析优化,使解析优化后的指令解析具有(1)降低了卡内代码量,(2)减少了对智能卡内部数据访问次数,(3)提高了指令执行速度。图1是Java智能卡运行环境的结构示意图。图2是本发明指令折叠优化的序列结构示意图。图3是本发明的IFA状态转换图。图4是本发明解析优化后实例化指令解析流程图。图5是本发明解析优化后方法调用指令解析流程图。图6是本发明解析优化后静态域访问指令解析流程图。图7是本发明解析优化后JCVM系统结构框图。具体实施例方式下面将结合附图对本发明作进一步的详细说明。本发明是一种智能卡运行环境的控制方法,所述智能卡至少包括卡内虚拟机、卡外虚拟机,所述卡内虚拟机内设有解释器单元,所述解释器单元用于实现字节码序列的解析过程;所述卡外虚拟机内设有转换器单元,所述转换器单元用于实现字节码序列的转换过程,其字节码序列的处理步骤有(A)对所述转换器单元输出的字节码序列进行折叠类型分类,得到折叠类型;(B)对经(A)折叠分类处理后的所述折叠类型按照折叠规则进行指令折叠优化,得到优化后的指令折叠优化字节码序列;(C)对经(B)折叠处理后的所述指令折叠优化字节码序列输入所述解释器中进行解析类型分类,得到解析类型;(D)对经(C)解析分类处理后的所述解析类型按照解析规则进行指令解析优化,得到对象的物理地址。所述对象是指实例化类、被调用方法或所访问的静态域。(一)指令折叠优化技术为了提高在寄存器型体系结构的处理器中使用解释器(软件实现)来执行字节码的Java智能卡的执行效率,本发明将指令折叠的思想引入到Java卡解释器的软件实现中,依据JCVM(Java卡虚拟机)的结构特点提出了卡内虚拟机、卡外虚拟机相结合的指令折叠优化的控制方法。指令折叠的基本思想是将一组相关的运算指令合并成一条单独的虚拟机伪指令来执行,从而避免了通过堆栈访问操作数的中间过程。图1虚线框内所示即为指令折叠的卡外部分,它将字节码序列(包含在CAP(ConvertedApplet)文件中,CAP文件是Java智能卡应用程序经过编译、转化后,即生成将要下载到Java智能卡卡内的安装文件,其中包含有可执行代码称为字节码。)中的一组相关的面向堆栈结构的可折叠指令折叠成一条单独的适于寄存器结构执行的两地址或三地址虚拟机伪指令。这些自定义的虚拟机伪指令在下载到卡上后由支持这些伪指令的解释器来进行解释执行。指令折叠的POC模型结构如下指令折叠是将一组面向堆栈操作的相关指令合并成一条单独的复合指令的过程。指令折叠组即一组可折叠的相关指令。Java卡虚拟机是一个堆栈计算机,因此根据对堆栈操作的相关特性可将字节码指令划分为三种基本角色类型生产者P、操作者O和消费者C。生产者P将常数、局部变量、静态域或this对象域压入操作数栈的指令,如sconst_O,sload,getstatic_s,getfield_s_this。操作者O从操作数栈栈顶获得操作数并执行相应操作的指令,其又可分为如下四类算逻运算OA执行算逻运算并将结果写回操作数栈的指令。控制转移OT无条件控制转移类指令,如jsr,athrow,invoke*,goto,ret,sreturn,stableswitch。改变堆栈状态类指令OS无法加入指令折叠组的直接堆栈操作指令或其他改变堆栈状态类指令,如pop,swap,dup,转换指令i2s,s2i,非this实例域操作指令getfield,putfield。杂类OM无法加入指令折叠组但不影响折叠判断的指令,如直接操作局部变量类指令sinc。消费者C从操作数栈弹出数据类指令,其又可分为如下两类变量存储CS弹出栈顶数据存储到局部变量、静态域或this对象中,如sstore,putstatic_s,putfield_s_this。判断分支CB弹出栈顶数据进行比较以进行程序控制分支,如ifeq,ifnull。指令折叠组中的指令经折叠处理后生成的虚拟机伪指令可分为三地址指令和两地址指令两种,其格式定义如下三地址折叠指令I3的四元组表示为I3=(O,S1,S2,T),其中O为代表指令语义的操作码,S1、S2为源操作数地址,T为目的操作数地址。两地址折叠指令I2的三元组表示为I2=(O,S1,T),其中O为代表指令语义的操作码,S1为源操作数地址,T为目的操作数地址。折叠指令是面向JCVM虚拟机体系结构的,因此其中的操作码使用JCVM规范中预留的185到253区间,指令中的寻址方式包括如下五种立即数寻址指令中的地址为立即数,可用于S1和S2。局部变量直接寻址指令中的地址为局部变量在局部变量区中的编号,可用于S1、S2和T。操作数栈寻址指令中的地址为操作数栈栈顶,可用于T。偏移量寻址用于条件跳转指令的T,指令中的地址为在方法区中程序的跳转偏移量或组件偏移量。常数池寻址指令中的地址为常数池索引,可用于S1、S2和T。依据前述的基本定义,指令折叠过程可表示为由P、O、C类指令所构成的指令折叠组折叠成一条单独的I3或I2折叠指令的过程。相应于此过程的指令折叠文法F四元组的定义如下F=(VN,VT,G,S),其中终结符号集VT={x|x为字节码指令},非终结符号集VN={POC模型中的标记符号P、OA、CS、CB}∪{折叠指令标记I3、I2}∪{S}S∈VN,为文法的识别符号。产生式集G={S→I3|I2I3→PPOACS|PPCB|PPOAI2→PCSP→<P类字节码序列>OA→<OA类字节码序列>CS→<CS类字节码序列>CB→<CB类字节码序列>}集合G中的产生式I3、I2的右部既为可识别的指令折叠组,指令的折叠过程即为同操作数类型指令由产生式右部到左部的规约过程,P指令中的操作数即为折叠指令中的源操作数,CS指令中的操作数为折叠指令中的目的操作数,PPCB折叠后的目的地址为跳转指令CB中的偏移量,PPOA折叠后的目的操作数地址为OA的目的地址-操作数栈栈顶。若指令折叠组中含O类指令,则折叠指令语义由其决定,否则由C类指令决定。编译转换后的字节码序列中指令折叠组的折叠类型有第一折叠类型、第二折叠类型、第三折叠类型和第四折叠类型。指令折叠组结构请参见图2所示。第一折叠类型实现两个指令折叠组按顺序出现。第二折叠类型实现指令组B被指令组A分隔开,且指令组A与指令组B无数据相关连。第三折叠类型,实现指令组B被指令组A分隔开,且指令组A与指令组B存在单重数据相关连。(sload3和sstore3)第四折叠类型,实现指令组B被指令组A分隔开,且指令组A与指令组B存在双重数据相关连。(sload3和sstore3,sload2和sstore2)数据相关(DataDependence)数据相关是对于指令i和指令j,如果(1)指令j使用指令i产生的结果,或者(2)指令j与指令k数据相关,指令k与指令i数据相关,则指令j与指令i之间存在一个先写后读相关链。单重数据相关是指存在一个先写后读相关链;双重数据相关是指存在两个先写后读相关链。针对每种类型相应的折叠处理规则如下折叠规则一,实现将所述第一折叠类型按顺序进行折叠;折叠规则二,首先将所述第二折叠类型中的指令组A进行折叠,并将指令组A折叠后的指令从指令队列中弹出,然后将所述第二折叠类型中的指令组B进行折叠;折叠规则三,为将第三折叠类型中指令组A先进行折叠,折叠后将其从指令队列中弹出,从而使指令组B中的指令相邻形成待折叠组,然后再折叠指令组B,使代码执行顺序生成为指令组B和指令组A;折叠规则四,为将第四折叠类型中的指令组A进行折叠;每种序列的具体示例如图2所示。指令折叠的过程可分为两个基本步骤首先,是依据折叠规则完成对输入字节码序列的指令折叠组的识别。其次,判断相邻指令折叠组的类型(第一折叠类型、第二折叠类型、第三折叠类型或第四折叠类型),依据前述给出的每种类型相应的折叠规则来进行处理,从而保证算法输出的字节码和折叠指令混合序列执行的正确性。指令折叠过程由一个移进——规约分析器来完成,首先设置一个字节码符号栈,依据系统的当前状态来决定将输入缓冲区中适当的字节码移入符号栈中,一旦栈顶符号串与产生式的右部相匹配则可进行规约。在此过程中应遵循如下原则折叠过程在一个基本块内进行,CB和OT类指令标示着基本块的结束,因此在处理完此类指令后即可终止折叠过程。OS类改变操作数栈状态的指令无法进行进一步的折叠判断,遇到此类指令应清空符号栈,重置系统空闲状态。不改变操作数栈状态的OM类指令不进入符号栈进行折叠处理。当遇到移进-规约冲突时采用移进策略,既给较长的产生式以较高的优先权。基于移进-规约分析器的指令折叠算法的有限状态机模型IFA的数学表述如下IFA为一五元组IFA=(Q,∑,f,qo,E),其中Q为移进-规约分析器状态的有限集合,除空闲状态和终止状态外,遇到P、O、C类指令系统转入相应的状态,因此状态集合如下Q={空闲状态,P状态,OA状态,CB状态,CS状态,终止状态}∑为有限输入符号集,在此即为文法F中的终结符号集VT。f为状态转换函数,定义域为状态集与输入符号集的笛卡尔乘积,值域为状态集fQ×∑→Q,具体的图形表述请参见图3.4。qo∈Q是状态机的初态,在此qo=空闲状态。E为终止状态,表示一个基本块指令折叠的结束。图3采用UML建模语言中的状态图对IFA的状态转换进行了图形描述。在进行折叠的过程(D2)中必须进行折叠组类型和数据相关的判断,因此设置折叠缓存队列QF,将需进行相关判断的折叠组加入此队列中并在输出时移出,若令当前折叠组为IG,其中的最右一条指令的类型为R(IG),则折叠过程描述如下FoldAndCheckDependency(){从符号栈中弹出IG;  if(队列QF为空)  if(同前续P类指令存在相关)  IG加入队列QF中;  else  折叠IG并输出;  else  {  if(IG同QF中IP构成类型3序列)  放弃折叠IG,折叠IP并输出;  else//类型2  {  switchR(IG)  caseCS,OA  折叠并输出IGIP;<!--SIPO<DPn="6">--><dpn="d6"/>  caseCB  放弃折叠IG,折叠IP并输出;  }  }  }(二)解析优化技术JCVM在解释执行命令前,需对其进行解析。但传统的解析过程频繁的访问位于智能卡内部的类、方法和域组件等内部数据,耗费了大量的系统时间。因此我们根据JCVM的特殊实现结构,提出并实现了卡内虚拟机、卡外虚拟机相结合的解析优化技术来加速卡内指令的执行。根据解析过程是否与卡内存储分配相关,可将解析分为静态绑定解析过程和动态绑定解析过程。静态绑定解析过程,只访问本CAP文件,而无需智能卡内资源,因此与卡内存储结构无关,为一编译时过程。而动态绑定解析过程,必须获得卡内资源,才能完成其解析过程,因此该过程与卡内存储结构相关,为一运行时过程。从JCVM虚拟机的卡外和卡内两部分协同实现的设计构思出发,我们可以把指令的标准解析过程分解,编译时的静态绑定解析过程放至卡外完成,同时用创建新的指令操作码(伪指令操作码,其值大于184)和解析后的结果(偏移量或token)构造成伪指令,并创建伪指令集,如表一所示。而将运行时的动态绑定过程放至卡内完成,通过卡内虚拟机解释伪指令,获得上述静态绑定解析的结果,并完成后续的卡内解析过程。表一伪指令集实例化指令的解析优化在执行指令之前,首先要根据指令参数得到将要实例化的类,即完成类解析过程。根据定义包的不同,被实例化类可分为本包所定义的类(简称本包类)和外包所定义的类(简称外包类)两种情况。如图4所示,本包类的解析将执行以下操作步骤1先将指令参数作为常数池数组索引,并将之乘4(常数池数组元素大小)后与常数池组件在CAP上的基址相加,即得到对应的常数项在CAP上的相对地址,该过程的数学表达式为常数项地址=4倍常数池索引+常数池基址(以下简称函数式)步骤2取出常数项中表示被实例化类的class_token,class_token在数值上等于被实例化的类位于CAP类组件中的偏移量。步骤3将此偏移量与卡内类组件基址相加,得到被实例化类的类信息在卡上的物理地址。以上解析过程中步骤1和步骤2为静态绑定过程,可放至卡外执行,并将执行结果和伪指令操作码构造为伪指令返回CAP,替代CAP中原指令。步骤3则为动态绑定过程,在卡上解释伪指令,确定类信息物理地址,完成类解析过程。外包类的解析过程步骤1和本包类的解析过程相同,但由于外包类的class_token由package_token(表示定义此类的包)和class_token(表示被实例化的类)组成。先通过package_token找到卡内CAP文件地址,再由class_token得到类信息在CAP的类组件中的物理地址。其中步骤1为静态绑定过程,放在卡外完成,并返回伪指令。其余过程则为动态绑定过程,在卡内解释伪指令,继续类解析过程,最后得到类信息在卡内的物理地址。方法调用指令的解析优化方法调用指令执行前,首先要根据指令参数得到对应的方法,即完成方法解析过程。根据方法所属的类的不同,可将方法分为本包定义的类的方法(简称本包方法)和外包定义的类的方法(简称外包方法)。如图5所示,本包方法的解析需执行以下操作步骤1调用函数式,将常数池索引转化为对应的常数项在CAP上的相对地址。步骤2取出常数项中class_token(表示定义此方法的类)和method_token(表示被调用的方法)。并对class_token进行类解析,得到定义此方法的类的类信息在CAP文件中的相对地址。步骤3根据method_token(数值上等于方法表索引),查找类信息中的方法表,得到此方法的方法代码在方法组件中的偏移量。方法组件(MethodComponent)描述了本包中所定义的每一个方法,包括类所定义的虚方法和每一个方法所联系的异常处理。方法组件中的所有方法和异常处理代码都为二进制虚拟机指令,通过虚拟机解释器对其解释执行,即可实现该方法所定义的功能。步骤4将此偏移量与卡内方法组件基址相加,得到将要调用方法代码的物理地址。步骤1、步骤2和步骤3为静态绑定过程,将之放在卡外完成,并返回相应的伪指令。步骤4则为动态绑定过程,在卡内解释伪指令,得到被调用方法代码的物理地址,完成方法解析过程。外包方法的解析过程与本包方法相似,只是由于定义方法的类为外包类,所以先要完成外包类解析过程,得到类信息在卡内的物理地址,其余过程则完全相同。以上过程中,只有步骤1为静态绑定过程,在卡外完成,并将构造的伪指令作为结果返回,其他步骤则为动态绑定过程,在卡内解释伪指令,继续方法解析过程,最后得到方法代码在卡内的物理地址。静态域访问指令的解析优化静态域访问指令执行前,也先要得到所要访问静态域的物理地址,即需先完成静态域解析过程。根据静态域的所属类的不同,静态域可分为本包定义的类的静态域(简称本包静态域)和外包定义的类的静态域(简称外包静态域)两种情况。如图6所示,本包静态域解析需执行以下操作步骤1调用函数式,将常数池索引转化为对应的常数项在CAP上的相对地址。步骤2取出常数项中staticfield_token(在数值上等于该静态域在静态域镜像中的偏移量)。步骤3将此偏移量与卡内静态域镜像基址相加,即可得到被访问的静态域在卡上的物理地址。步骤1和步骤2为静态绑定过程,可在卡外完成,并返回相应的伪指令。步骤3则为动态绑定过程,在卡内解释伪指令,确定静态域的物理地址,完成静态域解析过程。由于外包静态域解析所需信息不在本CAP内,因此执行步骤1后,得到的常数项由package_token(表示此静态域所属的包),class_token(表示此静态域所属的类)与staticfield_token(表示将访问的静态域)组成,需先根据package_token得到定义此静态域的CAP文件地址,然后由class_token和staticfield_token由CAP中信息得到此静态域的卡内物理地址。由解析过程可知,只有步骤1为静态绑定过程,放至卡外执行,并返回相应的伪指令,而其他过程则为动态绑定过程,在卡内解释伪指令,将token转化为被访问静态域在卡内的物理地址。CAP文件解析优化的实现也相应的分为卡外实现和卡内实现两部分。卡外过程在PC平台上执行,在这里我们用Java语言实现,用Java中的输入流将CAP文件中的指令读出,通过定义不同解析函数完成各类指令的卡外解析,然后通过Java中的输出流将结果替换原指令写入CAP中,即完成了卡外解析过程。卡内解析过程所要实现的内容是对伪指令的解释执行。在解释伪指令时,我们采用表跳转方法为每条伪指令定位,根据不同的伪指令操作码,系统跳至相应的处理代码处,继续执行未完的解析过程,并将最后的解析结果返回给解释器,解释器将根据此结果,访问Java栈、堆等数据结构,调用相关的本地方法,完成指令的解释执行。优化后的JCVM的系统框图如图7所示。有益效果(一)指令折叠优化技术本发明提高了指令的执行速度和Java卡的响应速度。定义指令折叠所带来的性能增益Pg为在折叠前后的平均执行时间如下表所示表二折叠前后的指令执行时间因此本折叠算法的平均性能增益为即指令的执行速度提高到原来的2.33倍。因此折叠优化明显加快了Java智能卡Applet的执行速度和响应速度。(二)解析优化技术优化后的解析流程有以下几个方面的优点(1)降低了卡内代码量由解析流程可以看出,解析优化将原本在卡上的部分解析过程,移至卡外执行,因此减少了卡内程序代码量,表三显示了优化前、后卡内代码量比较,可见通过解析优化,卡内代码量可降至原来的1/2甚至1/4。表三优化前、后代码量比较(2)减少了对智能卡内部数据访问次数表四显示了优化前后卡内数据的访问次数比较,优化后卡内数据的总访问次数下降到原来的3/8。表四优化前、后卡内数据访问次数比较(3)提高了指令执行速度表五显示了优化前后指令解析时间的比较,可见优化后指令的解析速度提高到原来的3.45倍,因此极大地提高了解析指令的执行速度。表五优化前后指令解析时间比较权利要求1.一种智能卡运行环境的控制方法,所述智能卡至少包括卡内虚拟机、卡外虚拟机,所述卡内虚拟机内设有解释器单元,所述解释器单元用于实现字节码序列的解析过程;所述卡外虚拟机内设有转换器单元,所述转换器单元用于实现字节码序列的转换过程,其特征在于字节码序列的处理步骤有(A)对所述转换器单元输出的字节码序列进行折叠类型分类,得到折叠类型;(B)对经(A)折叠分类处理后的所述折叠类型按照折叠规则进行指令折叠优化,得到优化后的指令折叠优化字节码序列;(C)对经(B)折叠处理后的所述指令折叠优化字节码序列输入所述解释器中进行解析类型分类,得到解析类型;(D)对经(C)解析分类处理后的所述解析类型按照解析规则进行指令解析优化,得到对象的物理地址。2.根据权利要求1所述的智能卡运行环境的控制方法,其特征在于折叠类型有第一折叠类型,实现两个指令折叠组按顺序出现;和第二折叠类型,实现指令组B被指令组A分隔开,且指令组A与指令组B无数据相关连;和第三折叠类型,实现指令组B被指令组A分隔开,且指令组A与指令组B存在单重数据相关连;和第四折叠类型,实现指令组B被指令组A分隔开,且指令组A与指令组B存在双重数据相关连。3.根据权利要求1所述的智能卡运行环境的控制方法,其特征在于折叠规则有折叠规则一,将所述第一折叠类型按顺序进行折叠;折叠规则二,首先将所述第二折叠类型中的指令组A进行折叠,并将指令组A折叠后的指令从指令队列中弹出,然后将所述第二折叠类型中的指令组B进行折叠;折叠规则三,将第三折叠类型中指令组A先进行折叠,折叠后将其从指令队列中弹出,从而使指令组B中的指令相邻形成待折叠组,然后再折叠指令组B,使代码执行顺序生成为指令组B和指令组A;折叠规则四,将第四折叠类型中的指令组A进行折叠。4.根据权利要求1所述的智能卡运行环境的控制方法,其特征在于解析类型有第一解析类型,由所述指令折叠优化字节码序列中的指令参数经过所述卡外虚拟机和卡内虚拟机解析得到实例化类的物理地址,实现实例化指令的解析优化;第二解析类型,由所述指令折叠优化字节码序列中的指令参数经过所述卡外虚拟机和卡内虚拟机解析得到被调用方法的物理地址,实现方法调用指令的解析优化;第三解析类型,由所述指令折叠优化字节码序列中的指令参数经过所述卡外虚拟机和卡内虚拟机解析得到所访问静态域的物理地址,实现静态域访问指令的解析优化。5.根据权利要求4所述的智能卡运行环境的控制方法,其特征在于解析类型中对所述第一解析类型中实例化指令的解析优化过程为(1)先将所述指令折叠优化字节码序列中的指令参数作为常数池数组索引,然后用4倍的所述常数池数组索引与常数池组件在CAP文件上的基址相加得到常数项地址,即常数项地址=4倍常数池索引+常数池基址;(2)取出常数项中表示被实例化类的类标记;(3)将所述类标记与卡内类组件基址相加得到被实例化类在智能卡中的物理地址(即实例化类的解析)。6.根据权利要求5所述的智能卡运行环境的控制方法,其特征在于解析优化过程中所述步骤(1)和所述步骤(2)为静态绑定过程,可放至卡外虚拟机上执行,并将新创建的指令操作码(其值大于184)和所述静态绑定解析后的结果结合定义为伪指令,返回CAP文件,替代CAP中的原指令;所述步骤(3)为动态绑定过程,在卡内虚拟机上解析伪指令,用于确定类信息物理地址完成所述实例化类的解析。7.根据权利要求4所述的智能卡运行环境的控制方法,其特征在于解析类型中对所述第二解析类型中方法调用指令的解析优化过程为(1)先将所述指令折叠优化字节码序列中的指令参数作为常数池数组索引,然后用4倍的所述常数池数组索引与常数池组件在CAP文件上的基址相加得到常数项地址,即常数项地址=4倍常数池索引+常数池基址;(2)取出常数项中类标记和方法标记,并对所述类标记进行类解析,得到定义此方法的类的类信息在CAP文件中的相对地址;(3)根据所述方法标记在(2)步骤中得到的所述类信息中查找,得到所述方法的方法代码在方法组件中的偏移量;(4)将经步骤(3)得到的偏移量与所述方法组件基址相加得到所需调用方法代码的物理地址。8.根据权利要求4所述的智能卡运行环境的控制方法,其特征在于解析类型中对所述第三解析类型中静态域访问指令的解析优化过程为(1)先将所述指令折叠优化字节码序列中的指令参数作为常数池数组索引,然后用4倍的所述常数池数组索引与常数池组件在CAP文件上的基址相加得到常数项地址,即常数项地址=4倍常数池索引+常数池基址;(2)取出常数项中的静态域标记;(3)将步骤(2)中取出的静态域标记与静态域镜像基址相加得到被访问的静态域在智能卡上的物理地址。9.根据权利要求2所述的智能卡运行环境的控制方法,其特征在于折叠类型中的所述第三折叠类型是单重数据相关连。10.根据权利要求2所述的智能卡运行环境的控制方法,其特征在于折叠类型中的所述第四折叠类型是双重数据相关连。11.根据权利要求1所述的智能卡运行环境的控制方法,其特征在于所述对象是指实例化类、被调用方法或所访问的静态域。全文摘要本发明公开了一种智能卡运行环境的控制方法,该控制方法先将输入的字节码序列进行折叠类型的分类,其次采用折叠规则对折叠类型进行折叠,然后对输出的折叠指令参数进行解析分类,最后得到适用于本发明智能卡运行环境的字节码序列。本发明的控制方法为了有效地提高应用程序的运行效率,在Java卡卡内、卡外虚拟机结构的基础上,运用字节码的指令折叠优化和解析优化方式,设计出相应的虚拟机伪指令,从而缩减了智能卡上的代码空间,有效地提高了应用程序的运行速度。文档编号G06F9/45GK1687900SQ200510077160公开日2005年10月26日申请日期2005年6月16日优先权日2005年6月16日发明者张其善,张大伟,杨东凯,姚黎明,吴鑫山申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1