CN112306632A - 一种Java Card虚拟机执行引擎及执行方法 - Google Patents
一种Java Card虚拟机执行引擎及执行方法 Download PDFInfo
- Publication number
- CN112306632A CN112306632A CN202011128496.2A CN202011128496A CN112306632A CN 112306632 A CN112306632 A CN 112306632A CN 202011128496 A CN202011128496 A CN 202011128496A CN 112306632 A CN112306632 A CN 112306632A
- Authority
- CN
- China
- Prior art keywords
- bytecode
- instruction
- execution
- virtual machine
- executed
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 21
- 230000006870 function Effects 0.000 claims description 9
- 230000009191 jumping Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本公开提供了一种Java Card虚拟机执行引擎及执行方法,执行引擎包括:字节码指令模板,被配置为与字节码在Java Card虚拟机规范中的值相对应的汇编指令集合;字节码解释器,被配置为从运行环境中获取待执行字节码指令,并通过查询所述字节码指令模板,将待执行字节码指令解释为对应的汇编指令并执行。该执行引擎和执行方法具有执行效率高,可移植性和扩展性良好等优点,特别适合安全芯片等嵌入式系统。
Description
技术领域
本发明涉及嵌入式计算机技术领域,特别涉及一种Java Card虚拟机执行引擎及执行方法。
背景技术
Java Card虚拟机系统是安全元件(Security Element)的开放应用平台,它能够使得安全模块,譬如智能卡或者其他的防篡改安全芯片,支持Java技术的各类应用,它提供了在单个资源受限的设备上存储和更新多个应用程序的安全且共通的执行平台。在PC机上由JAVA语言编写的Applet的函数,通过编译器编译成字节码,然后字节码下载到安全元件中,在需要执行时由执行引擎执行。
在当前的国内环境中,Java Card技术的供应商相对较少,Java Card技术核心之一的Java Card虚拟机执行引擎的实现方式,更多的是采用在安全芯片和智能卡原有的Native COS上直接对字节码进行解释执行或采用类似的方式,此类方式实现的Java Card虚拟机执行引擎执行效率较低,可移植和可扩展性较差。
发明内容
本公开提供一种Java Card虚拟机执行引擎,提升其解释执行的效率及其可移植性和可扩展性,降低与Java Card虚拟机系统中其他组成部份的功能重合度和耦合度,尤其适用于各类安全芯片和密码卡等。
本公开提供的Java Card虚拟机执行引擎,包括:
字节码指令模板,被配置为与字节码在Java Card虚拟机规范中的值相对应的汇编指令集合;
字节码解释器,被配置为从运行环境中获取待执行字节码指令,并通过查询所述字节码指令模板,将待执行字节码指令解释为对应的汇编指令并执行,以及将执行结果返回到运行环境。
进一步地,所述字节码指令模板以列表方式预置在安全元件的非失易性存储器中,当字节码指令需要解释执行时,通过查表直接使用。
进一步地,所述执行引擎在获取待执行字节码指令的同时获取栈帧地址及大小,然后根据所述栈帧地址和大小,进行数据的操作,而不再对硬件内存进行分配。
进一步地,所述执行引擎对来自多个不同Applet的字节码指令进行分时运行。
进一步地,对于分时运行的多个不同Applet的字节码指令,所述执行引擎根据获取的栈帧地址,动态切换需要操作的虚拟机栈帧,而对字节码指令的解释执行则不考虑其来自哪个Applet。
进一步地,所述执行引擎具有多个所述字节码指令模板,用于支持底层不同种类的硬件。
进一步地,所述执行引擎支持不同种类的解释性语言。
本公开还提供了一种应用以上执行引擎的Java Card虚拟机执行方法,包括以下步骤:
从运行环境中获取待执行字节码指令及相关信息,包括操作数、栈帧地址及大小;
查询所述字节码指令模板,将所述待执行字节码指令解释为对应的汇编指令并执行;
将执行结果返回到运行时环境。
进一步地,执行过程中根据从运行环境中获取的栈帧地址和大小,直接对栈帧内的数据和执行过程中产生的数据进行操作,而不再对硬件内存进行分配。
进一步地,其中所述查询所述字节码指令模板,将所述待执行字节码指令解释为对应的汇编指令并执行的步骤包括:
判断是否从运行环境获取了新的栈帧地址,如果是,则采用所述新的栈帧地址执行后续字节码指令;
判断所述待执行字节码指令是否是返回指令,如果是,则返回执行结果,并获取与跳转之前的栈帧地址之偏移,如果无偏移,则表明当前无Applet中的函数正在执行;
查询所述字节码指令模板,获取所述待执行字节码指令对应的汇编指令并执行。
进一步地,对来自多个不同Applet的字节码指令进行分时运行。
本公开提供的Java Card虚拟机执行引擎及执行方法,通过将字节码和对应的汇编语言指令事先存入模板,执行引擎查询该模板,即可对字节码指令进行解释执行,不仅提高程序的执行效率,而且能够通过配置多种此类模板适应不同的底层硬件,可以大大提升可移植性和可扩展性;进而,在执行字节码时直接访问运行环境传来的栈帧而不再对内存进行分配管理,进一步提升运行效率,并能实现对多个Applet的分时运行,简化了执行引擎的实现难度,对资源有限的嵌入式系统非常有利。
与现有技术相比,本公开的有益效果是:①高度简化:系统资源占用少,字节码执行效率高,极为适合安全芯片和密码卡等嵌入式设备;②支持多Applet中字节码的分时独立运行:各Applet具有独立的栈帧空间,不同的Applet的字节码分时由执行引擎解释执行;③可扩展:通过增加对针对不同的解释性语言的中间码、字节码的汇编代码模板,能够实现对其他解释性语言的支持;④可移植:该执行引擎的实现高度简化,耦合度低,通过与硬件抽象层的接口,可以快速的移植到其他安全芯片或安全模块上。
附图说明
通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施例方式中,相同的参考标号通常代表相同部件。
图1显示示例性Java Card虚拟机执行引擎实施例的组成示意图;
图2显示示例性Java Card虚拟机执行方法实施例工作流程图;
图3为栈帧数据组成示意图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施例。虽然附图中显示了本公开的优选实施例,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
如附图1所示,示例性的Java Card虚拟机执行引擎实施例包括:
字节码指令模板,与字节码在Java Card虚拟机规范中的值相对应的汇编指令集合;
字节码解释器,从Java Card虚拟机运行环境中获取待执行字节码指令,通过查询字节码指令模板,将待执行字节码指令解释为实际要执行的汇编指令并执行,然后将执行结果返回到运行环境。
其中的字节码指令模板为根据字节码在Java Card虚拟机规范中的值,定义的宏或者枚举值,并根据每条指令的作用形成的对应的汇编指令集合。
作为优选方案,字节码指令模板预置在安全元件的非失易性存储器中,并以列表的方式提供给所述字节码解释器,列表中对应的每一项元素即为字节码所对应的汇编指令数据。当字节码指令需要解释执行时通过查表方式直接使用,能够提高指令执行的速度。
作为优选方案,示例性执行引擎在获取待执行字节码指令的同时获取栈帧地址及大小,然后根据所述栈帧地址和大小,进行数据的操作,而不再对硬件内存进行分配。
执行引擎不涉及硬件的内存分配,只根据获取到的函数栈帧地址和大小,对其中的数据和函数执行时所产生的数据进行操作,能够简化执行引擎的功能,提升其运行效率,并使其具备更好的移植性。
作为优选方案,示例性执行引擎对来自多个不同Applet的字节码指令进行分时运行。
作为分时运行的优选方案,执行引擎根据从运行环境中获取的栈帧地址,动态切换需要操作的虚拟机栈帧,而对字节码指令的解释执行则不考虑其来自哪个Applet。
作为优选方案,示例性执行引擎具有多个字节码指令模板,用于支持底层不同种类的硬件。这些模板中的汇编语言指令数组形成列表,根据字节码的值查表使用,使同一Applet能够在不同的硬件平台运行。
作为优选方案,示例性执行引擎通过增加对针对不同的解释性语言的中间码、字节码的汇编代码模板,能够支持不同种类的其他解释性语言。
示例性的采用以上Java Card虚拟机执行引擎的执行方法实施例,包括以下步骤:
从Java Card虚拟机运行环境中获取待执行字节码指令及相关信息,包括操作数、栈帧地址及大小;
查询所述字节码指令模板,将所述待执行字节码指令解释为对应的汇编指令并执行;
将执行结果返回到运行时环境。
作为优选方案,示例性实施例中,根据从运行环境中获取的栈帧地址和大小,直接进行数据的操作,而不再对硬件内存进行分配。
作为优选方案,所述查询所述字节码指令模板,将所述待执行字节码指令解释为对应的汇编指令并执行的步骤包括:
判断是否从运行环境获取了新的栈帧地址,如果是,则采用所述新的栈帧地址执行后续字节码指令;
判断所述待执行字节码指令是否是返回指令,如果是,则返回执行结果,并获取与跳转之前栈帧地址的偏移,如果没有,则表明当前无Applet中的函数正在执行;
查询所述字节码指令模板,获取所述待执行字节码指令对应的汇编指令并执行。
作为优选方案,在示例性实施例中,对来自多个不同Applet的字节码指令进行分时运行。
分时运行时,执行引擎根据从运行环境中获取的栈帧地址,动态切换需要操作的虚拟机栈帧,而对字节码指令的解释执行则不考虑其来自哪个Applet。
应用示例:
一个具体的工作流程如附图2所示,具体描述如下:
S101:等待、获取来自Java Card虚拟机运行环境的数据,包括将要执行的AppletJava方法的信息——含Java方法的起始地址和大小,传递给执行引擎;以及当前要执行的字节码指令;
S102:根据运行环境是否传入了新的栈帧地址,判断是否需要栈帧地址初始化,如果是,则采用所述新的栈帧地址执行后续字节码指令;
S103:判断字节码指令是否是返回指令,如果是则返回执行结果,并获取与跳转之前的栈帧地址之偏移,如果偏移为0,则表明当前无Applet中的函数正在执行;
S104:查询字节码指令模板,获取待执行字节码指令对应的汇编指令并执行;
S105:返回执行结果;
S106:计算新的栈帧地址并开始后续字节码指令的执行。
可见,根据示例性实施例的JC虚拟机执行引擎和执行方法,可以得到一种简单、高效、可移植性和可扩展性良好的JavaCard虚拟机执行引擎。
上述技术方案只是本发明的示例性实施例,对于本领域内的技术人员而言,在本发明公开了应用方法和原理的基础上,很容易做出各种类型的改进或变形,而不仅限于本发明上述具体实施例所描述的方法,因此前面描述的方式只是优选的,而并不具有限制性的意义。
Claims (11)
1.一种Java Card虚拟机执行引擎,其特征在于,包括:
字节码指令模板,被配置为与字节码在Java Card虚拟机规范中的值相对应的汇编指令集合;
字节码解释器,被配置为从运行环境中获取待执行字节码指令,并通过查询所述字节码指令模板,将待执行字节码指令解释为对应的汇编指令并执行,以及将执行结果返回到运行环境。
2.根据权利要求1所述的Java Card虚拟机执行引擎,其特征在于,所述字节码指令模板以列表方式预置在安全元件的非失易性存储器中,当字节码指令需要解释执行时,通过查表直接使用。
3.根据权利要求1所述的Java Card虚拟机执行引擎,其特征在于,所述执行引擎在获取待执行字节码指令的同时获取栈帧地址及大小,然后根据所述栈帧地址和大小,进行数据的操作,而不再对硬件内存进行分配。
4.根据权利要求3所述的Java Card虚拟机执行引擎,其特征在于,所述执行引擎对来自多个不同Applet的字节码指令进行分时运行。
5.根据权利要求4所述的Java Card虚拟机执行引擎,其特征在于,对于分时运行的多个不同Applet的字节码指令,所述执行引擎根据获取的栈帧地址,动态切换需要操作的虚拟机栈帧,而对字节码指令的解释执行则不考虑其来自哪个Applet。
6.根据权利要求1所述的Java Card虚拟机执行引擎,其特征在于,所述执行引擎具有多个所述字节码指令模板,用于支持底层不同种类的硬件。
7.根据权利要求6所述的Java Card虚拟机执行引擎,其特征在于,所述执行引擎支持不同种类的解释性语言。
8.一种应用权利要求1-7中任一项所述执行引擎的Java Card虚拟机执行方法,包括以下步骤:
从运行环境中获取待执行字节码指令及相关信息,包括操作数、栈帧地址及大小;
查询所述字节码指令模板,将所述待执行字节码指令解释为对应的汇编指令并执行;
将执行结果返回到运行时环境。
9.根据权利要求8所述的Java Card虚拟机执行方法,其特征在于,执行过程中根据从运行环境中获取的栈帧地址和大小,直接对栈帧内的数据和执行过程中产生的数据进行操作,而不再对硬件内存进行分配。
10.根据权利要求9所述的Java Card虚拟机执行方法,其特征在于,其中所述查询所述字节码指令模板,将所述待执行字节码指令解释为对应的汇编指令并执行的步骤包括:
判断是否从运行环境获取了新的栈帧地址,如果是,则采用所述新的栈帧地址执行后续字节码指令;
判断所述待执行字节码指令是否是返回指令,如果是,则返回执行结果,并获取与跳转之前的栈帧地址之偏移,如果无偏移,则表明当前无Applet中的函数正在执行;
查询所述字节码指令模板,获取所述待执行字节码指令对应的汇编指令并执行。
11.根据权利要求8所述的Java Card虚拟机执行方法,其特征在于,对来自多个不同Applet的字节码指令进行分时运行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011128496.2A CN112306632A (zh) | 2020-10-21 | 2020-10-21 | 一种Java Card虚拟机执行引擎及执行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011128496.2A CN112306632A (zh) | 2020-10-21 | 2020-10-21 | 一种Java Card虚拟机执行引擎及执行方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112306632A true CN112306632A (zh) | 2021-02-02 |
Family
ID=74328235
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011128496.2A Pending CN112306632A (zh) | 2020-10-21 | 2020-10-21 | 一种Java Card虚拟机执行引擎及执行方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112306632A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103294518A (zh) * | 2012-12-31 | 2013-09-11 | 北京北大众志微系统科技有限责任公司 | 一种解释器中间接跳转预测方法及系统 |
CN105630534A (zh) * | 2015-04-27 | 2016-06-01 | 宇龙计算机通信科技(深圳)有限公司 | 基于TrustZone架构的应用程序执行方法、装置和终端 |
CN106033370A (zh) * | 2015-03-16 | 2016-10-19 | 龙芯中科技术有限公司 | 64位Java虚拟机的实现方法及装置 |
-
2020
- 2020-10-21 CN CN202011128496.2A patent/CN112306632A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103294518A (zh) * | 2012-12-31 | 2013-09-11 | 北京北大众志微系统科技有限责任公司 | 一种解释器中间接跳转预测方法及系统 |
CN106033370A (zh) * | 2015-03-16 | 2016-10-19 | 龙芯中科技术有限公司 | 64位Java虚拟机的实现方法及装置 |
CN105630534A (zh) * | 2015-04-27 | 2016-06-01 | 宇龙计算机通信科技(深圳)有限公司 | 基于TrustZone架构的应用程序执行方法、装置和终端 |
Non-Patent Citations (1)
Title |
---|
李攀攀: "基于"龙芯"平台的Java运行环境研究", 《中国知网硕士电子期刊》, no. 3, pages 2 - 3 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4099153B1 (en) | Extending a virtual machine instruction set architecture | |
US8104034B2 (en) | Purpose domain for in-kernel virtual machine for low overhead startup and low resource usage | |
US6983460B1 (en) | Method for loading applications into a multiapplication embedded system equipped with data processing resources, corresponding embedded system and execution method | |
US8429629B2 (en) | In-kernel virtual machine for low overhead startup and low resource usage | |
US8799932B2 (en) | System and method for support of legacy communications protocols in a smart card | |
CN107924326B (zh) | 对经更新的类型的迁移方法进行覆盖 | |
EP1145107A2 (en) | Token-based linking | |
KR20040004551A (ko) | 사전 습득된 프로그램 파일들을 생성 및 이용하기 위한방법 및 디바이스 | |
CN112905472A (zh) | 内核调试系统及方法 | |
CN112052006A (zh) | 一种软件代码编译方法及系统 | |
CN114116134A (zh) | 智能合约部署和执行方法、设备及存储介质 | |
US20030079202A1 (en) | Exception handling in java computing environments | |
WO2003001372A2 (en) | Customization of java runtime environments | |
WO2002091175A1 (en) | Specialized heaps for creation of objects in object-oriented environments | |
US7228532B1 (en) | Method and apparatus to facilitate code verification and garbage collection in a platform-independent virtual machine | |
CN112306632A (zh) | 一种Java Card虚拟机执行引擎及执行方法 | |
JP2003186675A (ja) | Javaコンピューティング環境におけるタイプチェック | |
EP1481320B1 (en) | Two tier clusters for representation of objects in java programming environments | |
US7181724B2 (en) | Representation of Java® data types in virtual machines | |
US7065747B2 (en) | Identifying references to objects during bytecode verification | |
JP2000330792A (ja) | バイトコードプログラム実行制御システム | |
US6751790B2 (en) | Frameworks for efficient representation of string objects in Java programming environments | |
JP2002366914A (ja) | マルチプラットフォーム型icカード | |
WO2003001364A2 (en) | Optional attribute generator for customized java programming environments | |
CN111966443B (zh) | 一种智能卡及其工作方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |