CN1687900A - 智能卡运行环境的控制方法 - Google Patents
智能卡运行环境的控制方法 Download PDFInfo
- Publication number
- CN1687900A CN1687900A CN 200510077160 CN200510077160A CN1687900A CN 1687900 A CN1687900 A CN 1687900A CN 200510077160 CN200510077160 CN 200510077160 CN 200510077160 A CN200510077160 A CN 200510077160A CN 1687900 A CN1687900 A CN 1687900A
- Authority
- CN
- China
- Prior art keywords
- instruction
- folding
- type
- card
- class
- 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.)
- Granted
Links
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种智能卡运行环境的控制方法,该控制方法先将输入的字节码序列进行折叠类型的分类,其次采用折叠规则对折叠类型进行折叠,然后对输出的折叠指令参数进行解析分类,最后得到适用于本发明智能卡运行环境的字节码序列。本发明的控制方法为了有效地提高应用程序的运行效率,在Java卡卡内、卡外虚拟机结构的基础上,运用字节码的指令折叠优化和解析优化方式,设计出相应的虚拟机伪指令,从而缩减了智能卡上的代码空间,有效地提高了应用程序的运行速度。
Description
技术领域
本发明涉及一种对智能卡运行环境进行控制的方法,具体地说,是指一种适用于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(Converted Applet)文件中,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|I2
I3→PPOACS|PPCB|PPOA
I2→PCS
P→<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存在单重数据相关连。(sload 3和sstore 3)
第四折叠类型,实现指令组B被指令组A分隔开,且指令组A与指令组B存在双重数据相关连。(sload 3和sstore 3,sload 2和sstore 2)
数据相关(Data Dependence)
数据相关是对于指令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为状态转换函数,定义域为状态集与输入符号集的笛卡尔乘积,值域为状态集:
f:Q×∑→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 { switch R(IG) case CS,OA: 折叠并输出IGIP; <!-- SIPO <DP n="6"> --> <dp n="d6"/> case CB: 放弃折叠IG,折叠IP并输出; } } }
(二)解析优化技术
JCVM在解释执行命令前,需对其进行解析。但传统的解析过程频繁的访问位于智能卡内部的类、方法和域组件等内部数据,耗费了大量的系统时间。因此我们根据JCVM的特殊实现结构,提出并实现了卡内虚拟机、卡外虚拟机相结合的解析优化技术来加速卡内指令的执行。
根据解析过程是否与卡内存储分配相关,可将解析分为静态绑定解析过程和动态绑定解析过程。静态绑定解析过程,只访问本CAP文件,而无需智能卡内资源,因此与卡内存储结构无关,为一编译时过程。而动态绑定解析过程,必须获得卡内资源,才能完成其解析过程,因此该过程与卡内存储结构相关,为一运行时过程。
从JCVM虚拟机的卡外和卡内两部分协同实现的设计构思出发,我们可以把指令的标准解析过程分解,编译时的静态绑定解析过程放至卡外完成,同时用创建新的指令操作码(伪指令操作码,其值大于184)和解析后的结果(偏移量或token)构造成伪指令,并创建伪指令集,如表一所示。而将运行时的动态绑定过程放至卡内完成,通过卡内虚拟机解释伪指令,获得上述静态绑定解析的结果,并完成后续的卡内解析过程。
表一 伪指令集
伪指令 | 操作码 | 参数 |
New | 185 | 被实例化类的类信息的物理地址 |
invokevirtual | 186 | 被调用方法的方法代码的物理地址 |
getstaticfield | 189 | 被访问域的静态域镜像的物理地址 |
… | … | … |
实例化指令的解析优化
在执行指令之前,首先要根据指令参数得到将要实例化的类,即完成类解析过程。根据定义包的不同,被实例化类可分为本包所定义的类(简称本包类)和外包所定义的类(简称外包类)两种情况。
如图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(数值上等于方法表索引),查找类信息中的方法表,得到此方法的方法代码在方法组件中的偏移量。方法组件(Method Component)描述了本包中所定义的每一个方法,包括类所定义的虚方法和每一个方法所联系的异常处理。方法组件中的所有方法和异常处理代码都为二进制虚拟机指令,通过虚拟机解释器对其解释执行,即可实现该方法所定义的功能。
步骤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为:
在折叠前后的平均执行时间如下表所示:
表二 折叠前后的指令执行时间
折叠组 | 第一折叠类型 | 第二折叠类型 | 第三折叠类型 | 第四折叠类型 |
折叠前(μs) | 54.76 | 156.72 | 127.39 | 117.33 |
折叠后(μs) | 27.94 | 58.67 | 58.67 | 50.29 |
因此本折叠算法的平均性能增益为:
即指令的执行速度提高到原来的2.33倍。因此折叠优化明显加快了Java智能卡Applet的执行速度和响应速度。
(二)解析优化技术
优化后的解析流程有以下几个方面的优点:
(1)降低了卡内代码量
由解析流程可以看出,解析优化将原本在卡上的部分解析过程,移至卡外执行,因此减少了卡内程序代码量,表三显示了优化前、后卡内代码量比较,可见通过解析优化,卡内代码量可降至原来的1/2甚至1/4。
表三 优化前、后代码量比较
指令 | 优化前代码量(行) | 优化后代码量(行) |
实例化 | 282 | 138 |
方法调用 | 258 | 63 |
静态域访问 | 118 | 28 |
(2)减少了对智能卡内部数据访问次数
表四显示了优化前后卡内数据的访问次数比较,优化后卡内数据的总访问次数下降到原来的3/8。
表四 优化前、后卡内数据访问次数比较
指令 | 优化前卡内数据访问次数 | 优化后卡内数据访问次数 |
实例化 | 2 | 1 |
方法调用 | 4 | 1 |
静态域访问 | 2 | 1 |
(3)提高了指令执行速度
表五显示了优化前后指令解析时间的比较,可见优化后指令的解析速度提高到原来的3.45倍,因此极大地提高了解析指令的执行速度。
表五 优化前后指令解析时间比较
指令 | 优化前解析时间(μS) | 优化后解析时间(μS) | 性能增益(优化后解析时间/优化前解析时间) |
实例化 | 316.0 | 154.6 | 2.043 |
方法调用 | 289.1 | 70.6 | 4.095 |
静态域访问 | 132.2 | 31.4 | 4.210 |
Claims (11)
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所述的智能卡运行环境的控制方法,其特征在于:所述对象是指实例化类、被调用方法或所访问的静态域。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100771607A CN1313927C (zh) | 2005-06-16 | 2005-06-16 | 智能卡运行环境的控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100771607A CN1313927C (zh) | 2005-06-16 | 2005-06-16 | 智能卡运行环境的控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1687900A true CN1687900A (zh) | 2005-10-26 |
CN1313927C CN1313927C (zh) | 2007-05-02 |
Family
ID=35305941
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100771607A Expired - Fee Related CN1313927C (zh) | 2005-06-16 | 2005-06-16 | 智能卡运行环境的控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1313927C (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100454256C (zh) * | 2006-12-25 | 2009-01-21 | 北京飞天诚信科技有限公司 | 一种提高自定义程序运行速度的方法和装置 |
CN102103489A (zh) * | 2011-01-28 | 2011-06-22 | 武汉天喻信息产业股份有限公司 | 一种提高静态域访问指令执行效率的方法 |
CN101739404B (zh) * | 2008-11-05 | 2012-08-29 | 爱思开电讯投资(中国)有限公司 | 字节码优化数据库及其建立方法以及字节码优化方法 |
CN101484883B (zh) * | 2006-06-30 | 2013-01-30 | 英特尔公司 | 用于重新映射图形数据的存储器地址的装置和方法 |
CN101777061B (zh) * | 2009-12-31 | 2014-06-04 | 北京握奇数据系统有限公司 | 一种java卡对象管理方法及java卡 |
CN105653351A (zh) * | 2015-12-30 | 2016-06-08 | 北京博思汇众科技股份有限公司 | java卡虚拟机的优化方法及系统 |
CN106020920A (zh) * | 2016-05-11 | 2016-10-12 | 广州新诚芯信息科技有限公司 | 一种jcvm解释器的预处理方法及系统 |
CN106293529A (zh) * | 2016-08-08 | 2017-01-04 | 北京数码视讯支付技术有限公司 | 一种智能卡存储数据的方法、装置和智能卡 |
CN113835620A (zh) * | 2021-08-13 | 2021-12-24 | 北京握奇智能科技有限公司 | 一种提高安全芯片应用执行效率的方法及系统 |
CN117492831A (zh) * | 2023-10-16 | 2024-02-02 | 东信和平科技股份有限公司 | 字节码指令序列分析方法、装置、电子设备、存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6779732B2 (en) * | 2001-08-31 | 2004-08-24 | Schulumberger Malco, Inc. | Method and apparatus for linking converted applet files |
CN1216327C (zh) * | 2003-05-15 | 2005-08-24 | 复旦大学 | 采用双指令集的32位嵌入式微处理器 |
-
2005
- 2005-06-16 CN CNB2005100771607A patent/CN1313927C/zh not_active Expired - Fee Related
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101484883B (zh) * | 2006-06-30 | 2013-01-30 | 英特尔公司 | 用于重新映射图形数据的存储器地址的装置和方法 |
CN100454256C (zh) * | 2006-12-25 | 2009-01-21 | 北京飞天诚信科技有限公司 | 一种提高自定义程序运行速度的方法和装置 |
CN101739404B (zh) * | 2008-11-05 | 2012-08-29 | 爱思开电讯投资(中国)有限公司 | 字节码优化数据库及其建立方法以及字节码优化方法 |
CN101777061B (zh) * | 2009-12-31 | 2014-06-04 | 北京握奇数据系统有限公司 | 一种java卡对象管理方法及java卡 |
CN102103489A (zh) * | 2011-01-28 | 2011-06-22 | 武汉天喻信息产业股份有限公司 | 一种提高静态域访问指令执行效率的方法 |
CN105653351A (zh) * | 2015-12-30 | 2016-06-08 | 北京博思汇众科技股份有限公司 | java卡虚拟机的优化方法及系统 |
CN105653351B (zh) * | 2015-12-30 | 2019-08-06 | 北京博思汇众科技股份有限公司 | java卡虚拟机的优化方法及系统 |
CN106020920A (zh) * | 2016-05-11 | 2016-10-12 | 广州新诚芯信息科技有限公司 | 一种jcvm解释器的预处理方法及系统 |
CN106293529A (zh) * | 2016-08-08 | 2017-01-04 | 北京数码视讯支付技术有限公司 | 一种智能卡存储数据的方法、装置和智能卡 |
CN113835620A (zh) * | 2021-08-13 | 2021-12-24 | 北京握奇智能科技有限公司 | 一种提高安全芯片应用执行效率的方法及系统 |
CN113835620B (zh) * | 2021-08-13 | 2024-05-24 | 北京握奇智能科技有限公司 | 一种提高安全芯片应用执行效率的方法及系统 |
CN117492831A (zh) * | 2023-10-16 | 2024-02-02 | 东信和平科技股份有限公司 | 字节码指令序列分析方法、装置、电子设备、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN1313927C (zh) | 2007-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1313927C (zh) | 智能卡运行环境的控制方法 | |
CN1186722C (zh) | 用于使用寄存器分配器建立调用约定序言和收尾程序代码的方法和装置 | |
CN1119756C (zh) | 用于进行静态初始化的方法和系统 | |
CN1160624C (zh) | 分配堆栈槽的方法与装置 | |
CN1922574A (zh) | 无需额外的代码分析来进行链接时代码优化的方法和系统 | |
CN1848088A (zh) | 将本机接口函数调用转换为更简单操作的方法和系统 | |
CN106663019A (zh) | 处理值类型 | |
WO2011054223A1 (zh) | 一种可重定位文件动态加载的方法及装置 | |
CN1367895A (zh) | 把不同源语言转移到一个执行介质 | |
WO2002054249A1 (en) | Methods and apparatus for optimizing garbage collection | |
CN1295605C (zh) | 处理虚拟机指令、执行本机处理器子程序的方法 | |
CN1687862A (zh) | 智能卡安全环境的控制方法 | |
CN1687904A (zh) | 智能卡存储环境的控制方法 | |
CN1419192A (zh) | 中间代码预处理、执行装置及执行系统及计算机程序产品 | |
US20060242635A1 (en) | Method and system for optimizing array sizes in a JAVA virtual machine | |
CN1313926C (zh) | 模板编译方法 | |
CN1173262C (zh) | 虚拟机指令的优化字节码解释器 | |
CN113703779B (zh) | 一种跨平台的多语言编译方法和超轻量物联网虚拟机 | |
CN1892602A (zh) | 一种二进制翻译中库函数调用的处理方法 | |
CN1801093A (zh) | Java操作系统中类装载的实现方法 | |
CN1975693A (zh) | 具有自驱动功能的指令仿真解析系统及其实现方法 | |
Leung et al. | Static single assignment form for machine code | |
Ghica et al. | High-level effect handlers in C++ | |
CN1255744C (zh) | 智能卡通用高速发卡机及其发卡方法 | |
US20040015850A1 (en) | Specialized heaps for creation of objects in object-oriented environments |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070502 Termination date: 20100616 |