CN102591787A - Java卡的数据处理方法及装置 - Google Patents
Java卡的数据处理方法及装置 Download PDFInfo
- Publication number
- CN102591787A CN102591787A CN2011104277895A CN201110427789A CN102591787A CN 102591787 A CN102591787 A CN 102591787A CN 2011104277895 A CN2011104277895 A CN 2011104277895A CN 201110427789 A CN201110427789 A CN 201110427789A CN 102591787 A CN102591787 A CN 102591787A
- Authority
- CN
- China
- Prior art keywords
- memory
- global variable
- java card
- static global
- address
- 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
- Stored Programmes (AREA)
Abstract
本申请提供了一种JAVA卡的数据处理方法及装置,其中,JAVA卡的数据处理方法用于在内存中访问静态全局变量,包括:为静态全局变量设置内存属性,用于指示在JAVA卡的内存中对所述静态全局变量进行与所述内存属性相对应的处理;根据所述内存属性确定所述静态全局变量在所述JAVA卡的内存中的内存地址;根据所述内存地址在所述JAVA卡的内存中对所述静态全局变量进行访问。通过本申请,避免了多次、反复访问EEPROM造成的耗时和低效率,提高了JAVA卡开发和JAVA程序执行的效率。
Description
技术领域
本申请涉及智能卡技术领域,特别是涉及一种JAVA卡的数据处理方法及装置。
背景技术
JAVA卡是一种可以运行JAVA程序的CPU智能卡。通过JAVA卡,开发人员可以任意选择他们所熟悉和喜欢的开发工具。由于对JAVA卡的编程是用JAVA语言,所以几乎当今所有流行的JAVA开发环境,如VJ++,Vcafe等,都可以被用来进行JAVA卡的开发,从而使得快速完成和调试JAVA卡的应用程序变为了可能。此外,也使得任何JAVA开发人员都可以变为JAVA卡开发人员,为智能卡的发展提供强有力的人才保证和更好的应用前景。
目前,在JAVA智能卡的开发过程中,开发人员需要在JAVA层定义大量的静态全局变量(即静态成员变量),这些静态全局变量在运行过程中放在EEPROM(Electrically Erasable Programmable Read-Only Memory,电可擦可编程只读存储器)中。因为JAVA应用中的静态全局变量是存放在EEPROM中,所以对静态全局变量的访问要通过静态全局变量的相对于静态组件的偏移地址来计算出静态全局变量的实际地址,进而进行相应的访问和处理,如图1所示。这样,在开发过程中,需要操作这些变量时就会有大量的读写EEPROM的过程,然而读写EEPROM非常耗时,从而影响JAVA卡开发和JAVA程序的执行效率。
总之,需要本领域技术人员迫切解决的一个技术问题就是:如何提高JAVA卡开发和JAVA程序执行的效率。
发明内容
本申请所要解决的技术问题是提供一种JAVA卡的数据处理方法及装置,以解决如何提高JAVA卡开发和JAVA程序执行的效率的问题。
为了解决上述问题,本申请公开了一种JAVA卡的数据处理方法,用于在内存中访问静态全局变量,包括:为静态全局变量设置内存属性,用于指示在JAVA卡的内存中对所述静态全局变量进行与所述内存属性相对应的处理;根据所述内存属性确定所述静态全局变量在所述JAVA卡的内存中的内存地址;根据所述内存地址在所述JAVA卡的内存中对所述静态全局变量进行访问。
优选地,所述根据所述内存属性确定所述静态全局变量在所述JAVA卡的内存中的内存地址的步骤包括:根据所述内存属性从所述JAVA卡的电可擦可编程只读存储器EEPROM中获取所述静态全局变量在所述JAVA卡的内存中的偏移地址;根据所述偏移地址确定所述静态全局变量在所述JAVA卡的内存中的内存地址。
优选地,在所述根据所述内存属性从所述JAVA卡的EEPROM中获取所述静态全局变量在所述JAVA卡的内存中的偏移地址的步骤之前,还包括:使用至少一个数组表示多个所述静态全局变量,每个所述数组具有一个数组标识;将每个所述数组以对象的形式存储到所述EEPROM中,每个数组对象中存储有该数组中每个所述静态全局变量在所述JAVA卡的内存中的偏移地址。
优选地,在所述将每个所述数组以对象的形式存储到所述EEPROM中的步骤之后,还包括:使用所述数组标识生成对象表,所述对象表中的每一个所述数组标识指向该数组标识所标识的数组在所述EEPROM中存储的数组对象的地址。
优选地,所述根据所述内存属性从EEPROM中获取所述静态全局变量在所述JAVA卡的内存中的偏移地址的步骤包括:获取所述静态全局变量所在数组的数组标识;根据该数组标识从所述对象表中获取该数组在所述EEPROM中存储的数组对象的地址;根据该数组对象的地址,获取该地址的数组对象中的所述静态全局变量在所述JAVA卡的内存中的偏移地址。
优选地,在所述为静态全局变量设置内存属性的步骤之后,还包括:生成包括所述静态全局变量的JAVA类文件;对所述JAVA类文件进行解析,输出所述静态全局变量的内存属性。
优选地,所述根据所述内存属性确定所述静态全局变量在所述JAVA卡的内存中的内存地址的步骤包括:根据所述内存属性,为所述静态全局变量指定在所述JAVA卡的内存中的偏移地址;根据所述偏移地址确定所述静态全局变量在所述JAVA卡的内存中的内存地址。
优选地,在所述根据所述内存属性,为所述静态全局变量指定在所述JAVA卡的内存中的偏移地址的步骤之后,还包括:使用设置的私有字节码指令替换对所述静态全局变量进行处理的原字节码指令,所述私有字节码指令用于在所述JAVA卡的内存中操作所述静态全局变量。
优选地,若存在多个所述静态全局变量,则在所述根据偏移地址确定所述静态全局变量在所述JAVA卡的内存中的内存地址的步骤之前或之后,还包括:获取所述多个静态全局变量的总偏移值,作为下一次指定具有所述内存属性的静态全局变量偏移地址的基址。
为了解决上述问题,本申请还公开了一种JAVA卡的数据处理装置,用于在内存中访问静态全局变量,所述装置包括:设置模块,用于为静态全局变量设置内存属性,以指示在JAVA卡的内存中对所述静态全局变量进行与所述内存属性相对应的处理;获取模块,用于根据所述内存属性确定所述静态全局变量在所述JAVA卡的内存中的内存地址;处理模块,用于根据所述内存地址在所述JAVA卡的内存中对所述静态全局变量进行访问。
优选地,所述获取模块包括:第一地址获取模块,用于根据所述内存属性从所述JAVA卡的电可擦可编程只读存储器EEPROM中获取所述静态全局变量在所述JAVA卡的内存中的偏移地址;第二地址获取模块,用于根据所述偏移地址确定所述静态全局变量在所述JAVA卡的内存中的内存地址。
优选地,所述获取模块包括:地址指定模块,用于根据所述内存属性,为所述静态全局变量指定在所述JAVA卡的内存中的偏移地址;第三地址获取模块,用于根据所述偏移地址确定所述静态全局变量在所述JAVA卡的内存中的内存地址。
与现有技术相比,本申请具有以下优点:
本申请通过为JAVA卡中设置的静态全局变量设置内存属性,明确了对静态全局变量的处理(包括写入、修改、删除等等),在JAVA卡的内存中进行。进而根据该内存属性,获取具有该属性的静态全局变量在JAVA卡内存中的地址,从而实现了在JAVA卡的内存中对静态全局变量的处理,避免了多次、反复访问EEPROM造成的耗时和低效率,提高了JAVA卡开发和JAVA程序执行的效率。
附图说明
图1是根据现有技术的一种JAVA卡的静态全局变量的处理方法的示意图;
图2是根据本申请实施例一的一种JAVA卡的数据处理方法的步骤流程图;
图3是根据本申请实施例二的一种JAVA卡的数据处理方法的步骤流程图;
图4是图3所示实施例的JAVA卡数据处理的示意图;
图5是根据本申请实施例三的一种JAVA卡的数据处理方法的步骤流程图;
图6是图5所示实施例中的RTP初始化示意图;
图7是图5所示实施例中的DTP初始化示意图;
图8是图5所示实施例的JAVA卡数据处理的示意图;
图9是根据本申请实施例四的一种JAVA卡的数据处理装置的结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
实施例一
参照图2,示出了根据本申请实施例一的一种JAVA卡的数据处理方法的步骤流程图。
本实施例的JAVA卡的数据处理方法用于在内存中访问静态全局变量,包括以下步骤:
步骤S202:为静态全局变量设置内存属性。
其中,所述内存属性用于指示在JAVA卡的内存中对所述静态全局变量进行与内存属性相对应的处理。
本步骤中,对于那些无须长时间或永久保存的静态全局变量的数据,为其设置内存属性,以指示对其的处理(如读、写、删除、修改等等)在内存中进行,无须再多次、重复地访问EEPROM。
步骤S204:根据内存属性确定静态全局变量在JAVA卡的内存中的内存地址。
当一个静态全局变量具有内存属性时,其需要有内存地址,以便在内存中的相应位置对其进行处理。内存地址的获取有多种方式,比如:在确定情况下直接指定静态全局变量在内存中的绝对地址,但更常用的是,指定静态全局变量在内存中的偏移地址,然后再根据内存的基地址,确定静态全局变量在内存中的绝对地址。
步骤S206:根据内存地址在JAVA卡的内存中对静态全局变量进行访问。
本实施例通过为JAVA卡中设置的静态全局变量设置内存属性,明确了对静态全局变量的访问(包括写入、修改、删除等等),在JAVA卡的内存中进行。进而根据该内存属性,获取具有该属性的静态全局变量在JAVA卡内存中的地址,从而实现了在JAVA卡的内存中对静态全局变量的处理,避免了多次、反复访问EEPROM造成的耗时和低效率,提高了JAVA卡开发和JAVA程序执行的效率。
实施例二
参照图3,示出了根据本申请实施例二的一种JAVA卡的数据处理方法的步骤流程图。
本实施例的JAVA卡的数据处理方法用于在内存中访问静态全局变量,包括以下步骤:
步骤S302:为多个静态全局变量设置内存属性。
步骤S304:使用一个数组放置多个静态全局变量。
该数组具有一个数组标识,如数组ID。
需要说明的是,当静态全局变量较多时,可以使用多个数组,每个数组都具有一个数组标识。优选地,使用临时数组,既可以满足实际需要,又不会长时间占用空间。
步骤S306:将该数组以对象的形式存储到EEPROM中。
其中,该数组对象中存储有该数组中每个静态全局变量在JAVA卡的内存中的偏移地址。
若有多个数组,则每个数组都以对象的形式存储到EEPROM中,每个数组对象中存储有该数组中每个静态全局变量在JAVA卡的内存中的偏移地址。
步骤S308:使用数组标识生成对象表,对象表中的每一个数组标识指向该数组标识所标识的数组在EEPROM中存储的数组对象的地址。
该步骤为可选步骤,尤其适用于存在多个数组的情形。使用每个数组的数组标识生成对象表,获取静态全局变量在JAVA卡中的内存地址时,先通过该静态全局变量所在数组的数组标识,在对象表中找到该数组的数组对象在EEPROM中的地址,然后再从该数组对象中获取静态全局变量的内存偏移地址。
通过对象表,在数组较多时,可以方便地对数组在EEPROM中对应的数组对象进行组织和管理,提高JAVA卡的数据访问和处理效率。
步骤S310:当需要对一个静态全局变量进行处理时,若确定该静态全局变量具有内存属性,则进行后续处理。
步骤S312:确定该静态全局变量所在的数组,获取该数组的数组标识。
步骤S314:根据该数组的数组标识,通过对象表确定该数组对应的数组对象在EEPROM中的地址。
步骤S316:从确定的EEPROM地址的数组对象中获取该数组在JAVA卡内存中的偏移地址。
步骤S318:结合获得的偏移地址和内存基地址,确定静态全局变量在内存中的内存地址,即绝对地址。
步骤S320:在该内存地址对该静态全局变量进行处理。
如:写入、修改、删除等。
上述JAVA卡的数据处理方法的整体流程如图4所示。在图4中,系统定义一个临时数组,用该数组的下标来表示静态全局变量,数组以对象的形式存储在EEPROM里的对象表里,从对象表可以获得该数组的ID号,通过ID号可以找到数组对象,数组对象中存储有该数组每个变量在内存中的偏移地址,通过偏移地址找到内存中变量相对应的地址。具体访问变量的过程是,首先要找到这个变量所在的数组在对象表中的ID号,通过这个ID号找到相应的数组对象在EEPROM中的地址,然后通过对象找到全局静态变量存放在RAM中的具体地址。
通过这种方式,在访问(读)静态全局变量时因需要访问EEPROM的对象表,因此并没有节省时间,但是在为静态全局变量赋值(写变量)时,因为写操作的是内存空间,所以节省了大量时间。从而在解决EEPROM中读写变量带来的效率问题时,尽可能地减少了读写EEPROM的操作,相应地提高了JAVA卡开发和JAVA程序执行的效率。
实施例三
参照图5,示出了根据本申请实施例三的一种JAVA卡的数据处理方法的步骤流程图。
本实施例以具体JAVA开发为例,说明JAVA卡的数据处理方法,包括以下步骤:
步骤S502:为静态全局变量设置内存属性。
首先,为字段(field,也即变量,该处字段是指静态全局变量形式的字段)添加一个annotation属性(内存属性),属性的值分别为COD(clear_on_deselect)或COR(clear_on_reset)。COD或COR属性,使得在生成JAVA类文件时,会在被声明字段的annotation属性中出现COD值或COR值。
通常,在JAVA类文件中,一个attribute(属性)是以一个attribute_info(属性信息)结构来表示的,该结构如下所示:
在设置内存属性,即annotation属性时,可以在JAVA类文件格式中的attributes属性中添加一个RuntimeAnnotation属性。这个RuntimeAnnotation只可能在field_info(字段信息)结构的attribute[]数组中看到这个RuntimeAnnotation属性。也就是说,RuntimeAnnotation属性是用来定义class(类)或interface(接口)中某个field(字段)的性质的。
如果某个field拥有static(静态)特性,并且想把该field分配到COD或COR空间(COD和COR均为内存空间)中,那么在代表该field的field_info结构中就会使用一个,并且是唯一的一个RuntimeAnnotation属性来代表该static field的值是COD还是COR。
在为字段定义了annotation属性后,如果某个字段的attribute(属性)是个RuntimeAnnotation属性的话,之前的attribute_info结构可更详细地解释为如下所示:
其中,attribute_name_index代表一个指到constant_pool[]数组中某个项目的索引值,通过这个项目可以找到代表这个attribute(属性)的名字——RunteimeAnnotation。attribute_length:在RuntimeAnnotation属性结构中的attribute_length等于14,表示接下来存储了14个bytes的信息。runtimeannotation_index代表一个指到constant_pool[]数组中某个项目的索引值,通过这个项目可以找到这个runtimeannotation属性所属的field_info结构所代表的static field是COD还是COR空间的数据。
步骤S504:生成具有COD或COR属性的类文件。
在JAVA类文件格式中的ClassFile,field_info,以及method_info,Code_attributes结构中都会使用到attributes(属性)。在定义了上述内存属性后,将会生成具有内存属性,即上述定义的COD或COR属性的类文件。
步骤S506:生成JCA文件。
JCA(Java Connector Architecture,或J2EE Connector Architecture)即Java连接器体系,是J2EE体系架构的一部分,为开发人员提供了一套连接各种异类的企业信息系统的体系架构。
本实施例中,通过converter(转换)工具来解析生成的类文件的field_info,最后把带有COD和COR属性的字段信息输出到JCA文件中。
以步骤S502中为字段定义的runtimeannotation属性为例,若某个字段为静态字段,且定义了runtimeannotation属性,则生成的类文件中包括该字段的runtimeannotation属性信息,即存在如下信息:
在解析类文件时,先找到类文件中的field信息;解析其静态域;判断该静态域是否具有COD或COR属性(attribute_info属性结构中runtimeannotation_index代表一个指到constant_pool[]数组中某个项目的索引值,通过这个项目可以找到这个runtimeannotation属性所属的field_info结构所代表的static field是COD还是COR空间的数据);在输出JCA文件时将静态域的COD或COR属性输出,即完成了JCA文件的处理。
在对类文件进行了解析后,生成的JCA文件中是否定义了COD或COR的static field的field结构分别如下:
其中,没有定义COD或COR的field结构如下:
步骤S508:生成mask(掩模)文件。
通过将输入的JCA文件进行转化解析来生成mask文件,其中包括:解析每个包的field信息,如果field具有COR属性,则存储静态全局变量在COR空间中的偏移值;如果field具有COD属性,则存储静态全局变量在指定逻辑通道所对应的COD空间上的偏移。
在输出mask文件中字节码时,如果是操作静态field的字节码,则判断field是否是COD或是COR空间的,如果是,则将当前的这条字节码替换成对应的操作COD或COR的私有字节码指令。
优选地,在mask文件中要输出COR静态字段的总的偏移值,以便以后在COR分配内存对象时以总的偏移值为基址向后分配空间,如图6所示,总的偏移值用来初始化RTP(COR已分配的空间的偏移,从0开始)的值。
优选地,mask文件要输出每个APPLET包中的COD静态field总的偏移值,然后会按包的上下文ID来输出每个包的COD静态field总的偏移值,以便以后在COD空间分配内存对象时以总的偏移值为基址向后分配空间,如图7所示,总的偏移值用来初始化DTP(DTP是APPLET包所对应的COD空间己分配的偏移,从0开始)的值。
通过输出总的偏移值,为下一次静态全局变量的内存分配提供了参考和依据,提高了静态全局变量内存分配的速度和效率。
步骤S510:初始化RTP和DTP的值。
在将mask文件写到rom后,会读出静态field对应COR空间的总偏移值,用这个值来初始化RTP。然后,读出每个APPLET包中的COD静态field总的偏移值来初始化每个DTP值(DTP共有16个)。
步骤S512:静态域字节码的操作。
包括:(1)静态域字节码的处理过程中会将标示COR或COD的标志读出来,也会读出静态域相对于COR或COD空间的偏移值。(2)判断静态域是COR还是COD,如果静态域是COR空间的则获取COR的基地址,用这个基地址加上读取出的偏移值,便是操作变量的地址;如果静态域是COD空间的则根据当前的通道ID号,根据这个ID号确定是哪块COD空间并得到这块COD空间的基地址,用这个基地址加上读取出的偏移值,便是操作变量的地址。
上述JAVA卡的数据处理方法的示意流程如图8所示。在图8中,系统定义具有内存属性的静态全局变量,通过这个属性可以得知该变量是存储在内存空间中的,每个变量映射到一个属于自己的偏移地址,通过这个偏移地址可以找到内存中变量相对应的地址。访问变量时,通过变量对应的偏移地址计算出变量的绝对地址,这个地址是存储在内存空间中的。因为变量是存储在内存中的,所以读写变量时就是在操作内存,这样要比读写EEPROM节省大量的时间,同时比实施例二的方案节省了占用EEPROM的空间。
具体实现时,可以通过自定义私有指令的方法来实现,包括:将静态全局变量直接指定到内存的COD或COR空间中(简称内存静态变量),通过添加私有指令来操作COD或COR中的静态变量。这样做的优点是:1、使用方便,只需用一个符号和一个COD或COR字符来确定静态变量是COD还是COR空间;2、操作内存静态变量时可以通过静态变量在COD或COR中的偏移值来直接找到变量。
本实施例中,将静态全局变量定义到内存中,通过静态全局变量在内存中的偏移值来访问静态全局变量;并且,通过属性来识别静态域是在COD空间还是在COR空间,并通过转换工具输出到MASK文件,进而实现了静态全局变量的内存处理。
本实施例通过对空间和性能的分析,将静态全局变量直接指定到内存中,与实施例二的方案相比,既能节省访问变量的时间又能节省变量赋值的时间,并且可以节省占用EEPROM的空间,提高了空间使用率和执行速度。
实施例四
参照图9,示出了根据本申请实施例四的一种JAVA卡的数据处理装置的结构框图。
本实施例的JAVA卡的数据处理装置用于在内存中访问静态全局变量,包括:设置模块902,用于为静态全局变量设置内存属性,以指示在JAVA卡的内存中对所述静态全局变量进行与内存属性相对应的处理;获取模块904,用于根据所述内存属性确定所述静态全局变量在JAVA卡的内存中的内存地址;处理模块906,用于根据所述内存地址在JAVA卡的内存中对所述静态全局变量进行访问。
优选地,获取模块904包括:第一地址获取模块9042,用于根据内存属性从JAVA卡的EEPROM中获取静态全局变量在JAVA卡的内存中的偏移地址;第二地址获取模块9044,用于根据偏移地址确定静态全局变量在JAVA卡的内存中的内存地址。
优选地,本实施例的JAVA卡的数据处理装置还包括:数组模块908,用于在第一地址获取模块9042根据内存属性从JAVA卡的EEPROM中获取静态全局变量在JAVA卡的内存中的偏移地址之前,使用至少一个数组表示多个静态全局变量,每个数组具有一个数组标识;将每个数组以对象的形式存储到EEPROM中,每个数组对象中存储有该数组中每个静态全局变量在JAVA卡的内存中的偏移地址。
优选地,数组模块908还用于,在将每个数组以对象的形式存储到EEPROM中之后,使用数组标识生成对象表,对象表中的每一个数组标识指向该数组标识所标识的数组在EEPROM中存储的数组对象的地址。
优选地,第一地址获取模块9042,用于获取静态全局变量所在数组的数组标识;根据该数组标识从对象表中获取该数组在EEPROM中存储的数组对象的地址;根据该数组对象的地址,获取该地址的数组对象中的静态全局变量在JAVA卡的内存中的偏移地址。
优选地,本实施例的JAVA卡的数据处理装置还包括:类生成模块910,用于在设置模块902为静态全局变量设置内存属性之后,生成包括所述静态全局变量的JAVA类文件;对JAVA类文件进行解析,输出所述静态全局变量的内存属性。
优选地,获取模块904包括:地址指定模块9046,用于根据内存属性,为静态全局变量指定在JAVA卡的内存中的偏移地址;第三地址获取模块9048,用于根据指定的偏移地址确定静态全局变量在JAVA卡的内存中的内存地址。
优选地,获取模块904还包括:替换模块90410,用于在地址指定模块9046根据内存属性,为静态全局变量指定在JAVA卡的内存中的偏移地址后,使用设置的私有字节码指令替换对静态全局变量进行处理的原字节码指令,私有字节码指令用于在JAVA卡的内存中操作静态全局变量。
优选地,本实施例的JAVA卡的数据处理装置还包括:总偏移输出模块912,用于若存在多个静态全局变量,则在第三地址获取模块9048根据偏移地址获取静态全局变量在JAVA卡的内存中的内存地址之前或之后,获取多个静态全局变量的总偏移值,作为下一次指定具有内存属性的静态全局变量偏移地址的基址。
本实施例的JAVA卡的数据处理装置用于实现前述多个方法实施例中相应的JAVA卡数据处理方法,并具有相应的JAVA卡数据处理方法的有益效果,在此不再赘述。
通过本申请的JAVA卡数据处理方案,提供了一种将EEPROM中的静态全局变量转换成内存变量的实现方式,解决了在EEPROM中读写变量带来的效率问题,尽量减少了读写EEPROM的操作,避免了多次、反复访问EEPROM造成的耗时和低效率,提高了JAVA卡开发和JAVA程序执行的效率。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上对本申请所提供的一种JAVA卡的数据处理方法和装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (12)
1.一种JAVA卡的数据处理方法,其特征在于,用于在内存中访问静态全局变量,包括:
为静态全局变量设置内存属性,用于指示在JAVA卡的内存中对所述静态全局变量进行与所述内存属性相对应的处理;
根据所述内存属性确定所述静态全局变量在所述JAVA卡的内存中的内存地址;
根据所述内存地址在所述JAVA卡的内存中对所述静态全局变量进行访问。
2.根据权利要求1所述的方法,其特征在于,所述根据所述内存属性确定所述静态全局变量在所述JAVA卡的内存中的内存地址的步骤包括:
根据所述内存属性从所述JAVA卡的电可擦可编程只读存储器EEPROM中获取所述静态全局变量在所述JAVA卡的内存中的偏移地址;
根据所述偏移地址确定所述静态全局变量在所述JAVA卡的内存中的内存地址。
3.根据权利要求2所述的方法,其特征在于,在所述根据所述内存属性从所述JAVA卡的EEPROM中获取所述静态全局变量在所述JAVA卡的内存中的偏移地址的步骤之前,还包括:
使用至少一个数组表示多个所述静态全局变量,每个所述数组具有一个数组标识;
将每个所述数组以对象的形式存储到所述EEPROM中,每个数组对象中存储有该数组中每个所述静态全局变量在所述JAVA卡的内存中的偏移地址。
4.根据权利要求3所述的方法,其特征在于,在所述将每个所述数组以对象的形式存储到所述EEPROM中的步骤之后,还包括:
使用所述数组标识生成对象表,所述对象表中的每一个所述数组标识指向该数组标识所标识的数组在所述EEPROM中存储的数组对象的地址。
5.根据权利要求4所述的方法,其特征在于,所述根据所述内存属性从EEPROM中获取所述静态全局变量在所述JAVA卡的内存中的偏移地址的步骤包括:
获取所述静态全局变量所在数组的数组标识;
根据该数组标识从所述对象表中获取该数组在所述EEPROM中存储的数组对象的地址;
根据该数组对象的地址,获取该地址的数组对象中的所述静态全局变量在所述JAVA卡的内存中的偏移地址。
6.根据权利要求1所述的方法,其特征在于,在所述为静态全局变量设置内存属性的步骤之后,还包括:
生成包括所述静态全局变量的JAVA类文件;
对所述JAVA类文件进行解析,输出所述静态全局变量的内存属性。
7.根据权利要求1或6所述的方法,其特征在于,所述根据所述内存属性确定所述静态全局变量在所述JAVA卡的内存中的内存地址的步骤包括:
根据所述内存属性,为所述静态全局变量指定在所述JAVA卡的内存中的偏移地址;
根据所述偏移地址确定所述静态全局变量在所述JAVA卡的内存中的内存地址。
8.根据权利要求7所述的方法,其特征在于,在所述根据所述内存属性,为所述静态全局变量指定在所述JAVA卡的内存中的偏移地址的步骤之后,还包括:
使用设置的私有字节码指令替换对所述静态全局变量进行处理的原字节码指令,所述私有字节码指令用于在所述JAVA卡的内存中操作所述静态全局变量。
9.根据权利要求7所述的方法,其特征在于,若存在多个所述静态全局变量,则在所述根据偏移地址确定所述静态全局变量在所述JAVA卡的内存中的内存地址的步骤之前或之后,还包括:
获取所述多个静态全局变量的总偏移值,作为下一次指定具有所述内存属性的静态全局变量偏移地址的基址。
10.一种JAVA卡的数据处理装置,其特征在于,用于在内存中访问静态全局变量,所述装置包括:
设置模块,用于为静态全局变量设置内存属性,以指示在JAVA卡的内存中对所述静态全局变量进行与所述内存属性相对应的处理;
获取模块,用于根据所述内存属性确定所述静态全局变量在所述JAVA卡的内存中的内存地址;
处理模块,用于根据所述内存地址在所述JAVA卡的内存中对所述静态全局变量进行访问。
11.根据权利要求10所述的装置,其特征在于,所述获取模块包括:
第一地址获取模块,用于根据所述内存属性从所述JAVA卡的电可擦可编程只读存储器EEPROM中获取所述静态全局变量在所述JAVA卡的内存中的偏移地址;
第二地址获取模块,用于根据所述偏移地址确定所述静态全局变量在所述JAVA卡的内存中的内存地址。
12.根据权利要求10所述的装置,其特征在于,所述获取模块包括:
地址指定模块,用于根据所述内存属性,为所述静态全局变量指定在所述JAVA卡的内存中的偏移地址;
第三地址获取模块,用于根据所述偏移地址确定所述静态全局变量在所述JAVA卡的内存中的内存地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110427789.5A CN102591787B (zh) | 2011-12-19 | 2011-12-19 | Java卡的数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110427789.5A CN102591787B (zh) | 2011-12-19 | 2011-12-19 | Java卡的数据处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102591787A true CN102591787A (zh) | 2012-07-18 |
CN102591787B CN102591787B (zh) | 2015-09-02 |
Family
ID=46480477
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110427789.5A Active CN102591787B (zh) | 2011-12-19 | 2011-12-19 | Java卡的数据处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102591787B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105302577A (zh) * | 2015-11-26 | 2016-02-03 | 上海兆芯集成电路有限公司 | 驱动执行单元的机器码产生方法以及装置 |
CN105606856A (zh) * | 2015-12-21 | 2016-05-25 | 南昌市科陆智能电网科技有限公司 | 一种提高电能表系统实时响应速度的方法、系统和电能表 |
CN106649009A (zh) * | 2016-11-30 | 2017-05-10 | 北京中电华大电子设计有限责任公司 | 一种java卡字节码引用访问测试方法 |
CN109947466A (zh) * | 2019-01-15 | 2019-06-28 | 珠海金山网络游戏科技有限公司 | 一种逆向获取ue4全局对象表的方法及其装置 |
CN111061508A (zh) * | 2019-12-12 | 2020-04-24 | 恒宝股份有限公司 | 一种Java卡及其性能优化方法 |
CN111562921A (zh) * | 2020-07-16 | 2020-08-21 | 飞天诚信科技股份有限公司 | 一种用于Java卡字节码的优化方法和设备 |
CN113835620A (zh) * | 2021-08-13 | 2021-12-24 | 北京握奇智能科技有限公司 | 一种提高安全芯片应用执行效率的方法及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030221073A1 (en) * | 2002-05-24 | 2003-11-27 | Saltz Michael K. | Memory management system supporting deletion of transient objects |
CN1172237C (zh) * | 1998-05-04 | 2004-10-20 | 国际商业机器公司 | 在非持久存储器内建立对象并保持可访问性的方法和装置 |
US20070168951A1 (en) * | 2003-12-08 | 2007-07-19 | Giesecke & Devrient Gmbh | Java smart card chip having memory area reserved for global variables |
CN102063384A (zh) * | 2009-11-13 | 2011-05-18 | 恒宝股份有限公司 | 一种java卡利用缓存对编程只读存储器进行读写操作的方法 |
CN102073544A (zh) * | 2011-01-28 | 2011-05-25 | 武汉天喻信息产业股份有限公司 | 一种基于页操作的EEPROM cache方法 |
CN102169459A (zh) * | 2010-11-29 | 2011-08-31 | 北京握奇数据系统有限公司 | 一种访问数据的方法、装置和智能卡 |
-
2011
- 2011-12-19 CN CN201110427789.5A patent/CN102591787B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1172237C (zh) * | 1998-05-04 | 2004-10-20 | 国际商业机器公司 | 在非持久存储器内建立对象并保持可访问性的方法和装置 |
US20030221073A1 (en) * | 2002-05-24 | 2003-11-27 | Saltz Michael K. | Memory management system supporting deletion of transient objects |
US20070168951A1 (en) * | 2003-12-08 | 2007-07-19 | Giesecke & Devrient Gmbh | Java smart card chip having memory area reserved for global variables |
CN102063384A (zh) * | 2009-11-13 | 2011-05-18 | 恒宝股份有限公司 | 一种java卡利用缓存对编程只读存储器进行读写操作的方法 |
CN102169459A (zh) * | 2010-11-29 | 2011-08-31 | 北京握奇数据系统有限公司 | 一种访问数据的方法、装置和智能卡 |
CN102073544A (zh) * | 2011-01-28 | 2011-05-25 | 武汉天喻信息产业股份有限公司 | 一种基于页操作的EEPROM cache方法 |
Non-Patent Citations (1)
Title |
---|
MIN-SIK JIN ET AL.: "A study on fast JCVM by moving object from EEPROM to RAM", 《PROCEEDINGS OF THE 11TH IEEE INTERNATIONAL CONFERENCE ON EMBEDDED AND REAL-TIME COMPUTING SYSTEMS AND APPLICANTS》, 19 August 2005 (2005-08-19) * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105302577A (zh) * | 2015-11-26 | 2016-02-03 | 上海兆芯集成电路有限公司 | 驱动执行单元的机器码产生方法以及装置 |
CN105606856A (zh) * | 2015-12-21 | 2016-05-25 | 南昌市科陆智能电网科技有限公司 | 一种提高电能表系统实时响应速度的方法、系统和电能表 |
CN106649009A (zh) * | 2016-11-30 | 2017-05-10 | 北京中电华大电子设计有限责任公司 | 一种java卡字节码引用访问测试方法 |
CN109947466A (zh) * | 2019-01-15 | 2019-06-28 | 珠海金山网络游戏科技有限公司 | 一种逆向获取ue4全局对象表的方法及其装置 |
CN111061508A (zh) * | 2019-12-12 | 2020-04-24 | 恒宝股份有限公司 | 一种Java卡及其性能优化方法 |
CN111061508B (zh) * | 2019-12-12 | 2022-05-20 | 恒宝股份有限公司 | 一种Java卡及其性能优化方法 |
CN111562921A (zh) * | 2020-07-16 | 2020-08-21 | 飞天诚信科技股份有限公司 | 一种用于Java卡字节码的优化方法和设备 |
CN111562921B (zh) * | 2020-07-16 | 2020-10-13 | 飞天诚信科技股份有限公司 | 一种用于Java卡字节码的优化方法和设备 |
CN113835620A (zh) * | 2021-08-13 | 2021-12-24 | 北京握奇智能科技有限公司 | 一种提高安全芯片应用执行效率的方法及系统 |
CN113835620B (zh) * | 2021-08-13 | 2024-05-24 | 北京握奇智能科技有限公司 | 一种提高安全芯片应用执行效率的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN102591787B (zh) | 2015-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102591787B (zh) | Java卡的数据处理方法及装置 | |
CN109597661B (zh) | 一种业务功能配置方法及装置 | |
CN107918666B (zh) | 一种区块链上的数据同步方法和系统 | |
CN102541521B (zh) | 基于结构化查询语言的操作指令自动生成装置及方法 | |
CN103077183B (zh) | 一种分布式顺序表的数据导入方法及其系统 | |
CN104360865A (zh) | 一种序列化方法、反序列化方法及相关设备 | |
CN101763447B (zh) | 三维造型软件与有限元分析软件之间数据自动转换的方法 | |
CN110020353B (zh) | 网页表单的构建方法及装置 | |
CN102201009A (zh) | 一种表单生成方法和装置 | |
CN105224370A (zh) | 一种加载elf文件的方法和装置 | |
CN108536829B (zh) | 一种提高无人机航测数据生成瓦片地图效率的方法 | |
CN101634942A (zh) | 一种动态创建数据表的方法和系统 | |
CN101110024A (zh) | 一种单元测试系统和方法 | |
CN103984554A (zh) | 软件设计文档的生成方法及装置 | |
CN101430685A (zh) | 下载方法及其系统 | |
CN104021147A (zh) | 一种码流解析方法及装置 | |
CN105867886A (zh) | 一种写表格的方法及装置 | |
CN107391099B (zh) | 一种资源预处理方法及装置 | |
CN103699627A (zh) | 一种基于Hadoop集群的超大文件并行数据块定位方法 | |
CN102855115A (zh) | 一种基于拼接墙显示文字标注的方法及系统 | |
CN105793842B (zh) | 序列化消息之间的转换方法和装置 | |
CN107943923B (zh) | 电报码数据库的构建方法、电报码识别方法及装置 | |
CN102902629B (zh) | 存储空间映射方法及装置 | |
CN103389893A (zh) | 一种配置寄存器读写方法及装置 | |
CN106202523A (zh) | 网页编辑方法及装置 |
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 | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: 100015 Beijing city Chaoyang District Dongzhimen West eight Street No. 2 room Wanhong Yan Dong Business Garden Patentee after: Beijing Watchdata Limited by Share Ltd Address before: 100015 Beijing city Chaoyang District Dongzhimen West eight Street No. 2 room Wanhong Yan Dong Business Garden Patentee before: Beijing Woqi Data System Co., Ltd. |