一种java卡局部变量字节码采用芯片硬件解析执行的方法

文档序号:9810344阅读:570来源:国知局
一种java卡局部变量字节码采用芯片硬件解析执行的方法
【技术领域】
[0001 ]本发明涉及JAVA智能卡领域,特别是一种JAVA卡局部变量字节码采用芯片硬件解析执行的方法。
【背景技术】
[0002]JAVA卡虚拟机(以下简称JCVM)是加载到智能卡芯片上的精简版java虚拟机,虚拟机的技术核心是JAVA卡栈帧的管理,以及JAVA卡字节码的解析执行。但是由于目前的智能卡芯片资源有限,CPU主频较低,用软件编码实现的JAVA卡虚拟机执行速度慢,在解析执行银行金融相关应用的时候,难以满足该行业要求的交易性能指标。且在增加安全机制后,性能下降严重,更难达到行业应用的性能要求。虚拟机执行速度慢的问题在除了银行业以外的其它行业也普遍存在,因此JAVA卡虚拟机字节码解析执行的效率尤为重要,其性能高低成为JAVA卡广品成败最关键的因素之一。

【发明内容】

[0003]本发明提供一种JAVA卡局部变量字节码采用芯片硬件解析执行的方法,可以大大提高性能,同时保证硬件所实现的功能模块的可靠性。JCVM局部变量字节码详见图3和图4。
[0004]在JCVM字节码解析器执行过程中,如果是局部变量相关的字节码(详见图3,图4表格中的字节码),即可以直接调用本发明提供的芯片硬件提供的处理逻辑(专为JCVM扩展的CPU指令)进行处理,而不再采用性能较低的软件编码方式实现。本发明提供的处理方式为首创,尚未发现有同类技术存在。
[0005]JAVA卡系统实现的原则为:保持JCVM解析器架构不变,将局部变量相关字节码的处理模块化为硬件逻辑实现,如芯片专门为JCVM扩展CPU指令集,不但不会影响整体JCVM的系统设计,而且可以提高此部分的可靠性。此方法可以应用到各种JAVA卡虚拟机解析器实现中,大大提高JAVA卡虚拟机字节码解析执行的效率和可靠性。
[0006]为了实现上述发明目的,本方法提供的硬件解析JAVA卡局部变量字节码的方法包括以下步骤:
[0007]步骤一、芯片专门为JCVM扩展用于管理栈帧的硬件寄存器,包括三个:reg_FP,reg—FP—TOP,reg_SP;
[0008]步骤二、芯片专门为JCVM扩展用于JAVA卡字节码流管理的PC指针硬件寄存器reg_PC;
[0009]步骤三、局部变量相关的字节码均不再采用软件编码实现,而采用扩展芯片的CPU指令来实现其功能。
[0010]具体来讲,包括:将当前字节码所提示的局部变量的值域取出,存储到相应的操作数中;以及将当前字节码所提示的操作数取出,并存储到字节码提示的局部变量中。其中包括取出局部变量的值域,找到对应的操作数位置,将值存储到对应位置;或者是取出相应的操作数,找到对应的局部变量位置,将值存储到对应位置。其间,需要通过栈指针检查变量位置的合法性,操作数位置的合法性。
[0011]步骤四、芯片专门为JCVM扩展中断,在硬件实现局部变量相关的字节码时,遇到错误发生时,触发JCVM处理中断,在中断处理程序中对相应错误进行错误处理。对于错误处理的方式有多种,各使用者可以根据系统需要进行,比如进行安全报警,或者是报出代码错误等提示信息。
【附图说明】
[0012]图1JAVA卡栈帧结构示意图
[0013]图2本发明所述的JAVA卡局部变量字节码采用芯片硬件解析执行的方法流程示意图
[0014]图3操作数栈道局部变量进行存储的字节码
[0015]图4局部变量到操作数栈的字节码
【具体实施方式】
[0016]以下结合附图和实例对本发明所提供的JAVA卡局部变量字节码采用芯片硬件解析执行的过程做进一步的说明。
[0017]一、桟管理
[0018]如附图1所示,JAVA卡栈帧包括操作数栈,局部变量区,以及上下文信息区,操作数栈为JAVA卡字节码操作数栈区域,局部变量区为JAVA卡当前方法局部变量存储区域。在JAVA卡字节码解析执行的过程中,数据主要在操作数栈及局部变量区域进行交互,此区域的性能高低会较大程度影响JAVA卡虚拟机字节码解析执行的性能。在本发明中,将附图1中的FP(栈底),G_FP_top(局部变量栈顶),SP(操作数栈顶)用智能卡芯片硬件专用寄存器进行其存储的存储,以及通过硬件逻辑实现数据的压栈,出栈操作管理;寄存器的处理时间要远小于用软件进行管理和处理的时间(为了便于下文描述,此发明暂且将此三个寄存器称为reg_FP,reg_FP_T0P,reg_SP)。
[0019]二、实现JAVA卡字节码流指针的硬件管理
[0020]在JCVM字节码解析器进行字节码取值,以及从字节码流中获取操作数的时候,需要从当前PC指针处读取字节码码流中的操作码或者操作数。本发明设计芯片硬件寄存器reg_PC用于专门指向JAVA卡字节码流当前位置。在JCVM字节码解析器进行字节码解析执行的时候,可以从寄存器reg_PC所指向的位置处读取数据存放到临时缓存,用于字节码解析,当前字节码读出之后,硬件逻辑自动实现字节码PC指针的递增操作(S卩reg_PC中保存的PC指针值自动递增到下一条字节码开始的位置)。由于JAVA卡应用均为JAVA卡字节码流,在应用执行过程中,在每次获取字节码的时候,均需要读取,频率非常高,用硬件处理此操作,可以大大缩短字节码处理的时间。
[0021]三、在局部变量相关的字节码处理过程中,本发明提供芯片硬件逻辑实现局部变量处理的功能模块,如CPU指令的方式进行处理,替代原始的纯软件处理方式。如增加如下指令集合:
[0022]A、实现操作数栈数据到局部变量的存储字节码
[0023]I)CPUCmd_SST0RE、CPUCmd_SST0RE_0、CPUCmd_SSTORE_l、CPUCmd_SST0RE_2、CPUCmd_SST0RE_3
[0024]此类CPU 指令用于实现字节码 SSTORE、SST0RE_0、SST0RE_1、SST0RE_2、551'01^_3的功能,指令功能说明详见图3。
[0025]2)CPUCmd_AST0RE、CPUCmd_AST0RE_0、CPUCmd_ASTORE_l、CPUCmd_AST0RE_2、CPUCmd_AST0RE_3
[0026]此类CPU 指令用于实现字节码六51'01^、451'01^_0^51'01^_1^51'01?_2^51'01^_3的功能,指令功能说明详见图3。
[0027]3)CPUCmd_ISTORE、CPUCmd_IST0RE_0、CPUCmd_IST0RE_1、CPUCmd_IST0RE_2、CP
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1