CN103677778A - 一种CAP文件Classref常量的解析方法 - Google Patents
一种CAP文件Classref常量的解析方法 Download PDFInfo
- Publication number
- CN103677778A CN103677778A CN201210351426.2A CN201210351426A CN103677778A CN 103677778 A CN103677778 A CN 103677778A CN 201210351426 A CN201210351426 A CN 201210351426A CN 103677778 A CN103677778 A CN 103677778A
- Authority
- CN
- China
- Prior art keywords
- class
- bag
- constant
- assembly
- index
- 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
本发明公开了一种CAP文件常量池组件CONSTANT_Classref常量的解析方法,对JCRE系统包和下载包的导出组件中class_export_info中的class_offset保留原值;若常量池组件中的CONSTANT_Classref常量为本包外的类,通过package_token项找到该包的包索引,将其存回替换package_token项,将包索引的最高位置1,保留class_token项的值;在参考位置组件解析时,将字节码操作数中的常量池索引替换为该常量被解析后的值;在虚拟机解释执行时,通过包索引找到包的导出组件,根据class_token从相应的class_export_info中直接读取class_offset的值,同时,通过包索引可以找到该包的类组件首地址,根据已经得到的偏移值,经过计算可得到该类的绝对地址。
Description
技术领域
本发明涉及智能卡技术领域,尤其涉及一种CAP文件常量池CONSTANT Classref常量的解析方法。
背景技术
JAVA卡技术成功的将Java语言应用到了智能卡技术领域,但由于智能卡设备本身在资源和速度上的限制,使得在其上运行的Java语言程序必须是经过特别处理的符合JAVA卡规范要求的程序,这种在JAVA卡上运行的程序被称为JAVA卡Applet。
JAVA卡技术包括三个方面的内容:JCRE(JAVA卡运行时环境)、JCVM(JAVA卡虚拟机)和JC API(JAVA卡的应用编程接口)。
JCRE主要负责实现APDU命令的分发、通道管理和应用选择等功能,这些内容采用Java语言实现,它们就是JCRE系统包。
JCVM用于对Java语言编译生成的字节码进行解释执行,这些字节码既包括JCRE系统包经转换后形成的字节码,也包括下载包中的字节码。
JCRE系统包的Java代码首先会通过JAVA编译器编译生成二进制代码即class文件,然后通过转换器将class文件转换成Java卡的可读汇编文件即JCA文件,最后将JCA文件转换为Java卡虚拟机可以识别的字节码存放到卡上。
下载包为通过下载的方式存放到卡上的包,在下载链接的过程中,会对下载包对应的CAP文件进行解析,解析的过程会将字节码解释执行过程中会使用到的内容存储到卡上。
在Java Card 2.2.2Virtual Machine Specification中给出了CAP文件的结构。其中规定CAP文件包括用于存储不同类型数据的多个组件,它们分别是:
Header组件-头组件;Directory组件-目录组件;Applet组件-应用组件;Import组件-导入组件;Constant Pool组件-常量池组件;Class组件-类组件;Method组件-方法组件;Static Field组件-静态域组件;Reference Location组件-参考位置组件;Export组件-导出组件;Descriptor组件-描述组件。
导出组件的结构如图1所示。导出组件中记录了包中所有需要导出给其他包使用的静态域和静态方法的信息,包括这些静态域和静态方法的个数、偏移以及它们所在的类相对于该包的类组件首地址的偏移。
其中,class_export_info结构用来存放每个类要导出的静态域和静态方法的信息,该结构中的class_offset表示的是该类相对于其所在包的类组件首地址的偏移。
常量池组件中CONSTANT_Classref常量的结构如图2所示。该常量表示的是对一个类或一个接口的引用,通过该常量的第二和第三个字节就可以唯一的定位到某一个类。
若该常量表示的是一个本包的类或接口,则第二和第三字节表示的是该类或接口相对于该包的类组件的首地址的偏移;若该常量表示的是一个本包外的类或接口,则第二和第三字节分别表示了package_token和class_token,前者表示的是该导入包在本包的导入组件中索引值,后者表示的该导入类在该导入包的Export文件中的token值,同时该值与该导入类在该导入包的导出组件中的索引一致。
目前对于常量池组件中CONSTANT_Classref常量的解析主要采用的是SUN公司提供的类似于静态编译的方法,如附图3所示,该方法的步骤如下:
1.解析导出组件时,对导出组件中的class_export_info数组中的class_offset项进行解析,通过该偏移计算出指定类的类组件存放的绝对地址,将绝对地址存放到一个全局引用表中,将返回的一个全局引用表的索引存放到原class_export_info数组中class_offset存放的位置;
2.解析常量池组件时,对常量池组件中CONSTANT_Classref常量为外包的类解析时,通过package_token查找该包的导入组件,得到该包在卡上所有包中的包索引,从而可以查找到该包的导出组件,从导出组件中找到由class token指定的类的class_export_info,读出其中class offset位置存放的一个被解析后的全局引用表的索引,存回到该常量的第二、三字节处;
3.在参考位置组件进行解析时,会将字节码中指向该常量池索引的操作数直接替换为被解析后得到的全局引用表的索引。
4.在虚拟机进行解释执行时,若发现字节码操作数中存放的常量池索引处现在存放的是一个全局引用表的索引,则会去全局引用表中查找到对应位置处存放的绝对地址读出。
5.在需要得到一个类相对于该包的类组件的偏移时,还需要先得到该包的类组件的首地址,随后使用刚刚得到的绝对地址减去首地址以得到偏移的值。
SUN公司提供的解决方案有以下缺陷:由于这种方案在下载包的过程中,对导出组件解析时会涉及到多次对存储器的读写操作,而写操作在对速度要求很高的智能卡领域又是极其耗时的,所以这种方案会造成下载过程中耗时增加。
发明内容
本发明实施例提供了一种CAP文件常量池组件CONSTANT_Classref常量的解析方法,用以在保证指令解释执行速度的前提下,对包下载的过程进行优化,提高包的下载速度。
本发明提供了一种CAP文件常量池CONSTANT_Classref常量的解析方式,包括:
步骤一:保留导出组件中class_export_info中的class_offset项,不做修改;
步骤二:解析常量池组件中的CONSTANT_Classref常量中的package_token项,保留class_token项;
步骤三:解析参考位置组件;
步骤四:解析解释执行过程中涉及到的字节码。
本发明实施例提供的CAP文件常量池组件CONSTANT_Classref常量的解析方式,省去了下载过程中解析导出组件时对存储器的读写操作,同时在解析常量池组件时不需要查找导出组件,节省了查找中的耗时,在解释执行过程中,可以直接从常量中读出包的索引值,节省了查找全局引用表的时间,另外,对于解释执行过程中涉及到的仅需要得到class偏移的指令来说,节省了通过绝对地址计算相对偏移的时间。
附图说明
图1为CAP文件中导出组件的结构;
图2为CAP文件中常量池组件的CONSTANT_Classref常量的结构;
图3为现有的对CAP文件常量池组件CONSTANT_Classref常量的解析方法流程图;
图4为本发明实施例的实施方案流程图;
图5为本发明实施例中对常量池组件中CONSTANT_Classref常量的解析前后比较图;
图6为本发明实施例中对相关字节码解析的基本流程。
具体实施方式
下面结合附图和实施例对本发明提供的CAP文件常量池组件CONSTANT_Classref常量的解析方式进行更详细地说明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例中提供的CAP文件常量池组件CONSTANT_Classref常量的解析方式,如图4所示,该方法步骤包括:
S101、对JCRE系统包的导出组件和常量池组件进行解析;
S102、对下载包中导出组件和常量池组件进行解析;
S103、对解释执行时相关字节码指令进行处理。
在本发明实施例中,既包括对JCRE系统包组件的解析,也包括对下载包组件的解析,这样做是为了保证在字节码的解释执行过程中可以统一的对本发明实施例中涉及到的字节码进行处理,而无需检查该字节码是属于JCRE还是属于下载包。
具体地说,在步骤S101中,JCRE系统包的Java代码首先会通过JAVA编译器编译生成二进制代码即class文件,然后通过转换器将class文件转换成Java卡的可读汇编文件即JCA文件,最后将JCA文件转换为Java卡虚拟机可以识别的字节码,在将JCA文件转换为字节码的过程中,会涉及到对JCRE系统包中导出组件和常量池组件的解析。
在对JCRE系统包中的导出组件进行解析时,本实施例中保留了该组件class_export_info的class_offset项中原来存放的某一个类相对于该类的类组件首地址的偏移,并不对其做任何的修改和替换,这样做可以方便在字节码指令解释执行时对偏移的查找和计算,由于没有对该值进行修改,也减少了对存储器的写操作次数。
在对JCRE系统包中的常量池组件进行解析时,如图5所示,本实施例中会判断其中CONSTANT_Classref常量的类型,S201表示这是一个包外的类,它的第二、三两个字节可以标识一个唯一的类,在解析时根据该常量的第二个字节中存放的package_token找到该包的导入组件,从导入组件中可以查找到该包在卡上所有包中的索引,然后将该索引值存回到package_token存放的位置,替换原package_token的值,对该常量的第三个字节中存放的class_token不做任何修改和替换,仍保留其原值,解析后的常量如S202中所示,这样做可以减少在字节码指令解释执行过程中对包索引值的查找时间。
步骤S102中,要对下载包的导出组件和常量池组件进行解析,这里对这两个组件的解析方式需要与对JCRE系统包的导出组件和常量池组件的解析方式保持一致,以达到解释执行时的统一性。
在对下载包中的导出组件进行解析时,本实施例中保留了该组件class_export_info的class_offset项中原来存放的某一个类相对于该类的类组件首地址的偏移,并不对其做任何的修改和替换,这样做可以方便在字节码指令解释执行时对偏移的查找和计算,由于没有对该值进行修改,也减少了对存储器的写操作次数。
在对下载包中的常量池组件进行解析时,如图5所示,本实施例中会判断其中CONSTANT_Classref常量的类型,S201表示这是一个包外的类,它的第二、三两个字节可以标识一个唯一的类,在解析时根据该常量的第二个字节中存放的package_token找到该包的导入组件,从导入组件中可以查找到该包在卡上所有包中的索引,将该索引值的最高位置1,以表示这是一个本包外的类,然后将修改后的索引值存回到package_token存放的位置,替换原package_token的值,对该常量的第三个字节中存放的class_token不做任何修改和替换,仍保留其原值,解析后的常量如S202中所示,这样做可以减少在字节码指令解释执行过程中对包索引值的查找时间。
步骤S103中要完成对CONSTANT_Classref常量相关的字节码的解释执行,与该常量相关的字节码包括:anewarray、checkcast、instanceof、invokeinterface和new。对这些字节码的解释执行过程可以参考图6。
anewarray指令的操作数为一个常量池的索引,该索引指向的常量是一个CONSTANT_Classref类型的常量,它代表的要创建的数组的类型,但该操作数在参考位置组件解析的过程中会被替换为该常量的值,也就是由间接引用变成了直接引用,而在常量池组件解析的过程中,若该类是本包以外的其他包中的类,则该常量的值被解析为该类所在的包在卡上所有包中的索引值与该类的class_token值,所以经过参考位置组件替换后,该常量的值便会取代原常量池的索引值而成为anewarray指令的操作数。
在anewarray指令的解释执行过程中,需要得到该类该对象数组中每个对象所属的类相对于该类所在包的类组件首地址的偏移,可以通过操作数中第一个字节的该包的索引得到该包导出组件的地址,然后从导出组件中根据class_token找到对应class_export_info的位置,从中直接读出class_offset的值,另外该指令解释执行时还需要得到该类所在包在卡上所有包中的索引值,这个值可以直接通过将操作数的第一个字节最高位置0得到。
checkcast指令的操作数有三个字节,这三个字节的组合代表了一种对象的类型,该指令用于检查对象是否是指定类型的,其中的后两个字节代表的操作数是一个常量池的索引,该索引指向的常量是一个CONSTANT_Classref类型的常量,该索引在参考位置组件解析的过程中会被替换为该常量的值,在常量池组件解析的过程中,若该类是本包以外的其他包中的类,则该常量的值被解析为了该类所在的包在卡上所有包中的索引值与该类的class_token值,所以经过参考位置组件替换后,该常量的值便会取代原常量池的索引值而成为checkcast指令的操作数。
在checkcast指令的解释执行过程中需要得到该强制转换类型的类的绝对地址,可以通过该包的索引得到该包的导出组件的地址,然后从导出组件中根据class_token找到对应的class_export_info的位置,从中直接读出class_offset的值,再根据包的索引和class_token得到该包中指定class_token的class地址,加上class_offset即为该类在包中的绝对地址。
instanceof指令的操作数也有三个字节,与checkcast指令类似,这三个字节的组合代表了一种对象的类型,该指令用于检查对象是否是指定类型的,并返回检查的结果,其中后两个字节代表的操作数是一个常量池的索引,该索引指向的常量是一个CONSTANT_Classref类型的常量,该索引在参考位置组件解析的过程中会被替换为该常量的值,在常量池组件解析的过程中,若该类是本包以外的其他包中的类,则该常量的值被解析为了该类所在的包在卡上所有包中的索引值与该类的class_token值,所以经过参考位置组件替换后,该常量的值便会取代原常量池的索引值而成为instanceof指令的操作数。
在instanceof指令的解释执行过程中需要得到目标类的绝对地址,可以通过该包的索引得到该包的导出组件的地址,然后从导出组件中根据class_token找到对应的class_export_info的位置,从中直接读出class_offset的值,再根据包的索引和class_token得到该包中指定class_token的class地址,加上class_offset即为该类在包中的绝对地址。
invokeinterface指令的操作数有四个,其中第二、三字节代表的是一个常量池的索引,它代表了接口的类型,该指令用于调用指定接口的指定接口方法,第二、三字节代表的常量池的索引指向的是一个CONSTANT_Classref类型的常量,该索引在参考位置组件解析的过程中会被替换为该常量的值,在常量池组件解析的过程中,若该类是本包以外的其他包中的类,则该常量的值被解析为了该类所在的包在卡上所有包中的索引值与该类的class_token值,所以经过参考位置组件替换后,该常量的值便会取代原常量池的索引值而成为invokeinterface指令的操作数。
在invokeinterface指令的解释执行过程中需要得到接口类的绝对地址,可以通过该包的索引得到该包的导出组件的地址,然后从导出组件中根据class_token找到对应的class_exort_info的位置,从中直接读出class_offset的值,再根据包的索引和class_token得到该包中指定class_token的class地址,加上class_offset即为该类在包中的绝对地址。
new指令的操作数为一个常量池的索引,该索引指向的常量是一个CONSTANT_Classref类型的常量,它代表的要创建的数组的类型,但该操作数在参考位置组件解析的过程中会被替换为该常量的值,也就是由间接引用变成了直接引用,而在常量池组件解析的过程中,若该类是本包以外的其他包中的类,则该常量的值被解析为了该类所在的包在卡上所有包中的索引值与该类的class_token值,所以经过参考位置组件替换后,该常量的值便会取代原常量池的索引值而成为new指令的操作数。
在new指令的解释执行过程中,需要得到待创建对象所属类的绝对地址,可以通过该包的索引得到该包的导出组件的地址,然后从导出组件中根据class_token找到对应的class_export_info的位置,从中直接读出class_offset的值,再根据包的索引和class_token得到该包中指定class_token的class地址,加上class_offset即为该类在包中的绝对地址。另外该指令解释执行时还需要得到该类所在包在卡上所有包中的索引值,这个值可以直接通过将操作数的第一个字节最高位置0得到。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明涉及的技术范围内,可以轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (11)
1.一种CAP文件常量池组件CONSTANT_Classref常量的解析方法,对包下载的过程进行优化,其特征在于包括以下步骤:
步骤一:保留导出组件中class_export_info中的class_offset项,不做修改;
步骤二:解析常量池组件中的CONSTANT_Classref常量中的package_token项,保留class_token项;
步骤三:解析参考位置组件;
步骤四:解析解释执行过程中涉及到的字节码。
2.如权利要求1中所述的方法,其特征在于:若为JCRE系统包,在将该系统包的Java代码转换为字节码时,对该系统包中导出组件中class_export_info中的class_offset项的值不做任何修改和替换。
3.如权利要求1中所述的方法,其特征在于:若为下载包,在下载链接过程中,对该下载包中导出组件中class_export_info中的class_offset项的值保留原值,不做任何替换和修改。
4.如权利要求1中所述的方法,其特征在于:若为JCRE系统包,在将该系统包的Java代码转换为字节码时,对该系统包中的常量池组件中的CONSTANT_Classref常量为本系统包外的类的情况,将该常量中的package_token项替换为该系统包在JAVA卡上的包索引,并将最高位置1,保留class_token项。
5.如权利要求1中所述的方法,其特征在于:若该包为下载包,在下载链接过程中,对该下载包中的常量池组件中的CONSTANT_Classref常量为本包外的类的情况,将该常量中的package_token项替换为该下载包在JAVA卡上的包索引,并将最高位置1,保留class_token项。
6.如权利要求1中所述的方法,其特征在于:在参考位置组件解析时,会将字节码操作数中的常量池索引替换为该常量被解析后的值。
7.如权利要求1中所述的方法,解释执行过程中涉及到的字节码anewarray用于创建一个新的对象数组,其特征在于,对anewarray字节码进行解析时,需要得到待创建的新的对象数组中每个对象所属类的class_offset,若每个对象所属类所在包与anewarray字节码所在包不同,该字节码的操作数经过参考位置组件的解析,将被替换为每个对象所属类所在包的包索引和class_token项,通过包索引可以得到包索引所指的包的导出组件的地址,然后从导出组件中根据class_token项找到对应class_export_info的位置,从中直接读出class_offset的值。
8.如权利要求1中所述的方法,解释执行过程中涉及到的字节码checkcast用于将某一类的对象强制转换为目标类的对象,其特征在于,对checkcast字节码进行解析时,当目标类为引用类型时,需要得到该目标类的绝对地址,若该目标类所在包与checkcast字节码所在包不同,该字节码的操作数经过参考位置组件的解析,将被替换为目标类所在包的包索引和class_token项,通过该包索引可以得到该包索引所指的包的导出组件的地址,然后从导出组件中根据class_token项找到对应的class_export_info的位置,从中直接读出class_offset的值,再根据包索引得到包索引所指的包的类组件的首地址,加上class_offset即为目标类在包中的绝对地址。
9.如权利要求1中所述的方法,解释执行过程中涉及到的字节码instanceof用于判断某一对象是否为目标类的类型,其特征在于,对instanceof字节码进行解析时,需要得到目标类的绝对地址,若该类所在包与instanceof字节码所在包不同,该字节码的操作数经过参考位置组件的解析,将被替换为目标类所在包的包索引和class_token项,通过该包索引可以得到包索引所指的包的导出组件的地址,然后从导出组件中根据class_token找到对应的class_export_info的位置,从中直接读出class_offset的值,再根据包索引得到包索引所指的包的类组件的首地址,加上class_offset即为目标类在包中的绝对地址。
10.如权利要求1中所述的方法,解释执行过程中涉及到的字节码invokeinterface用于调用接口类中的接口方法,其特征在于,对invokeinterface字节码进行解析时,需要得到接口类的绝对地址,若该接口类所在包与invokeinterface字节码所在包不同,该字节码的操作数经过参考位置组件的解析,将被替换为接口类所在包的包索引和class_token项,可以通过该包索引得到包索引所指的包的导出组件的地址,然后从导出组件中根据class_token找到对应的class_export_info的位置,从中直接读出class_offset的值,再根据包索引得到包索引所指的包的类组件的首地址,加上class_offset即为目标类在包中的绝对地址。
11.如权利要求1中所述的方法,解释执行过程中涉及到的字节码new用于创建一个新对象,其特征在于,对new字节码进行解析时,需要得到待创建的新对象所属类的绝对地址,若新对象所属类所在包与new字节码所在包不同,该字节码的操作数经过参考位置组件的解析,将被替换为新对象所属类所在包的包索引和class_token项,通过该包索引得到包索引所指的包的导出组件的地址,然后从导出组件中根据class_token找到对应的class_export_info的位置,从中直接读出class_offset的值,再根据包索引得到包索引所指的包的类组件的首地址,加上class_offset即为目标类在包中的绝对地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210351426.2A CN103677778B (zh) | 2012-09-18 | 2012-09-18 | 一种CAP文件Classref常量的解析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210351426.2A CN103677778B (zh) | 2012-09-18 | 2012-09-18 | 一种CAP文件Classref常量的解析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103677778A true CN103677778A (zh) | 2014-03-26 |
CN103677778B CN103677778B (zh) | 2016-09-14 |
Family
ID=50315456
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210351426.2A Active CN103677778B (zh) | 2012-09-18 | 2012-09-18 | 一种CAP文件Classref常量的解析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103677778B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103914326A (zh) * | 2014-04-21 | 2014-07-09 | 飞天诚信科技股份有限公司 | 一种高效更新java指令的方法和装置 |
CN105653351A (zh) * | 2015-12-30 | 2016-06-08 | 北京博思汇众科技股份有限公司 | java卡虚拟机的优化方法及系统 |
CN109684027A (zh) * | 2017-10-18 | 2019-04-26 | 北京京东尚科信息技术有限公司 | 动态跟踪Java虚拟机运行的方法和装置 |
CN112230941A (zh) * | 2020-09-22 | 2021-01-15 | 成都融微软件服务有限公司 | 一种Java Card包及应用程序安装方法和工具 |
CN113672984A (zh) * | 2021-08-25 | 2021-11-19 | 武汉天喻信息产业股份有限公司 | 基于文件结构设计的链接方法及可读存储介质 |
CN113867733A (zh) * | 2021-09-29 | 2021-12-31 | 烽火通信科技股份有限公司 | 一种Java字节码修改方法与装置 |
CN114995843A (zh) * | 2022-08-03 | 2022-09-02 | 紫光同芯微电子有限公司 | 一种程序包组件的下载存储方法及装置 |
CN115309405A (zh) * | 2022-08-24 | 2022-11-08 | 北京熵核科技有限公司 | 一种代码链接优化方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3632598B2 (ja) * | 1998-03-23 | 2005-03-23 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 変更定数プールを備えたJavaランタイム・システム |
CN102023885A (zh) * | 2010-12-17 | 2011-04-20 | 北京握奇数据系统有限公司 | 一种存储Java卡运行时环境字节码的方法及系统 |
CN102103489A (zh) * | 2011-01-28 | 2011-06-22 | 武汉天喻信息产业股份有限公司 | 一种提高静态域访问指令执行效率的方法 |
-
2012
- 2012-09-18 CN CN201210351426.2A patent/CN103677778B/zh active Active
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103914326B (zh) * | 2014-04-21 | 2017-02-08 | 飞天诚信科技股份有限公司 | 一种高效更新java指令的方法和装置 |
CN103914326A (zh) * | 2014-04-21 | 2014-07-09 | 飞天诚信科技股份有限公司 | 一种高效更新java指令的方法和装置 |
CN105653351A (zh) * | 2015-12-30 | 2016-06-08 | 北京博思汇众科技股份有限公司 | java卡虚拟机的优化方法及系统 |
CN105653351B (zh) * | 2015-12-30 | 2019-08-06 | 北京博思汇众科技股份有限公司 | java卡虚拟机的优化方法及系统 |
CN109684027A (zh) * | 2017-10-18 | 2019-04-26 | 北京京东尚科信息技术有限公司 | 动态跟踪Java虚拟机运行的方法和装置 |
CN112230941B (zh) * | 2020-09-22 | 2024-03-29 | 成都融微软件服务有限公司 | 一种Java Card包及应用程序安装方法和工具 |
CN112230941A (zh) * | 2020-09-22 | 2021-01-15 | 成都融微软件服务有限公司 | 一种Java Card包及应用程序安装方法和工具 |
CN113672984A (zh) * | 2021-08-25 | 2021-11-19 | 武汉天喻信息产业股份有限公司 | 基于文件结构设计的链接方法及可读存储介质 |
CN113867733A (zh) * | 2021-09-29 | 2021-12-31 | 烽火通信科技股份有限公司 | 一种Java字节码修改方法与装置 |
CN114995843A (zh) * | 2022-08-03 | 2022-09-02 | 紫光同芯微电子有限公司 | 一种程序包组件的下载存储方法及装置 |
CN114995843B (zh) * | 2022-08-03 | 2022-10-18 | 紫光同芯微电子有限公司 | 一种程序包组件的下载存储方法及装置 |
CN115309405A (zh) * | 2022-08-24 | 2022-11-08 | 北京熵核科技有限公司 | 一种代码链接优化方法 |
CN115309405B (zh) * | 2022-08-24 | 2023-08-04 | 北京熵核科技有限公司 | 一种代码链接优化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103677778B (zh) | 2016-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103677778A (zh) | 一种CAP文件Classref常量的解析方法 | |
CN107291480B (zh) | 一种函数调用方法及装置 | |
EP2487585B1 (en) | Method and device for dynamically loading relocatable file | |
CN110704063B (zh) | 编译和执行智能合约的方法及装置 | |
US10089119B2 (en) | API namespace virtualization | |
CN109491695A (zh) | 一种集成安卓应用的增量更新方法 | |
CN111770113A (zh) | 一种执行智能合约的方法、区块链节点和节点设备 | |
CN102023885A (zh) | 一种存储Java卡运行时环境字节码的方法及系统 | |
US9558096B2 (en) | Method and apparatus for supporting performance analysis | |
CN105677302A (zh) | 一种应用程序模块化开发方法以及装置 | |
CN101782868A (zh) | 一种用于对本地方法调用进行性能测试的方法和装置 | |
CN105404794A (zh) | Java应用软件的保护方法和装置 | |
WO2024045379A1 (zh) | 编译方法和编译器、Wasm虚拟机 | |
CN106648755A (zh) | 一种在安卓art环境中动态加载dex的方法及装置 | |
CN103412754A (zh) | 动态语言代码执行方法和装置 | |
CN102103489A (zh) | 一种提高静态域访问指令执行效率的方法 | |
US9047403B2 (en) | Debugger with previous version feature | |
CN116931947A (zh) | 一种优化wasm字节码的方法及执行方法、计算机设备及存储介质 | |
CN107133055A (zh) | 一种基于ClassLoader实现定制开发的方法 | |
US8589899B2 (en) | Optimization system, optimization method, and compiler program | |
CN109409037B (zh) | 一种数据混淆规则的生成方法、装置及设备 | |
CN116700629B (zh) | 数据处理方法和装置 | |
CN116382785B (zh) | 用于数据处理的方法及装置、计算设备及存储介质 | |
EP3067795A1 (en) | A method for generating an embedded system derivable into a plurality of personalized embedded system | |
CN109960497A (zh) | 一种脚本文件间的调用方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 102209 Beijing, Beiqijia, the future of science and technology in the south area of China electronic network security and information technology industry base C building, Applicant after: Beijing CEC Huada Electronic Design Co., Ltd. Address before: 100102 Beijing City, Chaoyang District Lize two Road No. 2, Wangjing science and Technology Park A block five layer Applicant before: Beijing CEC Huada Electronic Design Co., Ltd. |
|
COR | Change of bibliographic data | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |