CN102193829A - 虚拟机调用本地接口的方法及装置 - Google Patents
虚拟机调用本地接口的方法及装置 Download PDFInfo
- Publication number
- CN102193829A CN102193829A CN2011101323730A CN201110132373A CN102193829A CN 102193829 A CN102193829 A CN 102193829A CN 2011101323730 A CN2011101323730 A CN 2011101323730A CN 201110132373 A CN201110132373 A CN 201110132373A CN 102193829 A CN102193829 A CN 102193829A
- Authority
- CN
- China
- Prior art keywords
- local interface
- instruction
- virtual machine
- order parameter
- call
- 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
Images
Landscapes
- Executing Machine-Instructions (AREA)
Abstract
一种虚拟机调用本地接口的方法,包括以下步骤:载入指令;解释所述指令以及指令参数;判断所述指令是否为调用指令,如果是,则判断调用的目标地址是否为本地接口地址,若是,则读取所述指令参数;根据所述指令参数跳转执行对应的本地接口函数。上述虚拟机调用本地接口的方法及装置对于程序中需要进行本地调用的指令通过直接读取该指令参数来执行该指令,该方法的实现不依赖某种特定指令集,特别是不依赖他方有知识产权的指令集,从而使虚拟机调用本地接口的方法更灵活,不需要通过真实硬件进行指令参数的读取以及执行指令,极大地提高了反应速度。
Description
【技术领域】
本发明涉及计算机技术,特别是涉及一种虚拟机调用本地接口的方法及装置。
【背景技术】
虚拟机(Virtual Machine)是运行在物理计算机上的一个应用程序,是通过相关的虚拟机软件在物理计算机上所模拟出的计算机系统,并像真正的计算机那样工作。虚拟机可以分为Java虚拟机以及开源虚拟机等。
在实际使用过程中,Java虚拟机借助Java指令集中本地调用的“本地接口特定指令”来实现内部运行的Java代码与其它语言编写的应用程序和库进行交互,使得任意一个本地应用程序均能嵌入Java虚拟机中。“本地接口特定指令”是Java指令集中专门定义的“本地编程接口”特定指令,必须事先在Java指令集中专门定义。
但是,Java指令集归属于Sun Microsystems公司,使用Java指令集涉及了著作权的问题,并且必须事先在Java指令集中进行定义,在调用本地应用程序的过程中非常地不方便,限制了虚拟机反应速度的提高。
开源虚拟机大多没有本地接口特定指令,例如VirtualGBA、Skyeye。这些开源虚拟机实际上是通过软件去实现目标CPU(Central Processing Unit,中央处理器)的指令集、存储空间和寄存器等。
某个开源虚拟机可以模拟ARM(Advanced RISC Machines)平台以提供在计算机环境下的模拟实验。目标CPU集成了中央处理器、存储器和外设。外设可以是LCD(Liquid Crystal Display,液晶显示器)控制器、输入输出设备和定时器等。例如,此开源虚拟机中的应用程序在访问显示屏时,应用程序会将内容直接写入目标CPU的内存或寄存器中,而目标CPU的内存或寄存器对于虚拟机来说会映射至宿主机的内存中,进而虚拟机在一定时间内刷新显示到显示屏中。此开源虚拟机在模拟应用程序时需要将相应的操作与物理计算机中的设备结合起来进行模拟,大大降低了反应速度。
【发明内容】
基于此,有必要提供一种能提高反应速度的虚拟机调用本地接口的方法。
此外,还有必要提供一种能提高反应速度的虚拟机调用本地接口的装置。
一种虚拟机调用本地接口的方法,包括以下步骤:
载入指令;
解释所述指令以及指令参数;
判断所述指令是否为调用指令,如果是,则判断调用的目标地址是否为本地接口地址,若是,则读取所述指令参数;
根据所述指令参数跳转执行对应的本地接口函数。
优选地,还包括:
当所述指令不是调用指令或调用的目标地址不是本地接口地址时,解释并执行所述指令。
优选地,所述根据所述指令参数跳转执行对应的本地接口函数的步骤之后还包括:
将所述本地接口函数的执行结果存储于所述指令参数中。
优选地,所述将所述本地接口函数的执行结果存储于所述的指令参数中的步骤之后还包括:
执行返回指令的步骤。
一种虚拟机调用本地接口的装置,至少包括:
指令载入模块,用于载入指令;
指令解释模块,用于解释所述指令以及指令参数;
判断处理模块,用于判断所述指令是否为调用指令,如果是,则进一步判断调用的目标地址是否为本地接口地址,若是,则读取所述指令参数;
本地实现模块,用于根据所述指令参数跳转执行对应的本地接口函数。
优选地,还包括:
执行模块,用于当所述指令不是调用指令或调用的目标地址不是本地接口地址时解释并执行所述指令。
优选地,所述本地实现模块包括:
本地执行单元,用于读取指令参数,并根据所述指令参数执行对应的本地接口函数;
结果存储单元,用于将所述本地接口函数的执行结果存储于所述指令参数中。
优选地,所述本地实现模块还包括:
返回执行模块,用于执行返回指令。
上述虚拟机调用本地接口的方法及装置对于程序中需要进行本地调用的指令通过直接读取该指令参数来执行该指令,该方法的实现不依赖某种特定指令集,特别是不依赖他方有知识产权的指令集,从而使虚拟机调用本地接口的方法更灵活,不需要通过真实硬件进行指令参数的读取以及执行指令,极大地提高了反应速度。
【附图说明】
图1为一个实施例中虚拟机调用本地接口的方法的流程图;
图2为一个实施例中虚拟机调用本地接口的装置的结构示意图;
图3为另一个实施例中虚拟机调用本地接口的装置的结构示意图;
图4为一个实施例中本地实现模块的结构示意图。
【具体实施方式】
图1示出了一个实施例中虚拟机调用本地接口的方法,包括以下步骤:
步骤S101,载入指令。本实施例中,应用程序在虚拟机中是以指令的形式表达的,虚拟机通过执行指令来实现应用程序的功能。对于函数调用,应用程序进入调用的函数时,被编译为调用指令,此时,将该函数所需要的参数放入堆栈或随机存储器中,进而产生指令完成指令的载入。
步骤S102,解释指令以及指令参数。本实施例中,例如,对于“call gui_init”的指令,在虚拟机中是以“0xAB,”的形式出现的,因此经过解释可以获知,0xAB为call指令,0xCD,oxEF为gui_init函数的目标地址,即调用的目标地址。
步骤S103,判断指令是否为调用指令,如果是,则进入步骤S105,如果否,则进入步骤S106。本实施例中,判断指令的类型是否为调用指令,如果是,则需要进入进一步的判断,以获知该指令所调用的目标地址是否为本地接口地址。
步骤S105,判断调用的目标地址是否为本地接口地址,若否,则进入步骤S106,若是,则进入步骤S107。本实施例中,本地调用可以是虚拟机对显示屏、定时器、输入输出设备等外设的访问,也可以是对物理计算机上其他本地应用程序的访问,即对本地接口地址的访问,例如,Java虚拟机中的源代码为Java代码,Java虚拟机是以Java代码的形式运行所有指令的,物理计算机上为其它语言(如C语言)编写的应用程序和库,通过本地调用允许物理计算机中的应用程序和库嵌入到Java虚拟机中,实现已有应用程序和库支持Java代码,而不必花费大量的时间与Java虚拟机的源代码相链接,也不需要通过Java指令集等有知识产权的指令集来实现虚拟机的本地调用。
步骤S106,解释并执行该指令。本实施例中,经过对该指令中目标地址的判断可以获知该指令的执行不需要进行本地调用,因此通过虚拟机直接解释并执行该指令即可,正常运行该指令。
步骤S107,读取该指令参数。本实施例中,读取该指令参数的步骤为:通过虚拟机读取该指令参数。从虚拟机的随机存储器或当前的堆栈中读取执行该指令所需要的指令参数。
步骤S109,根据指令参数跳转执行对应的本地接口函数。本实施例中,根据读取到的指令参数虚拟机可以找到对应的本地接口函数,进而跳转执行该本地接口函数。虚拟机在读取所需的指令参数后直接跳转执行对应的本地接口函数,大大地提高了虚拟机的应用程序访问外设以及本地调用的速度,不需要进行事先定义以及依赖于JAVA指令集及其它类似的指令集,大大增强了虚拟机的灵活性。
步骤S110,将本地接口函数的执行结果存储于指令参数中,并执行返回指令。本实施例中,将执行结果存储于调用该本地接口函数时所传入的指令参数中,通过返回指令的执行返回虚拟机的应用程序中继续执行其它指令。
图2示出了一个实施例中的虚拟机调用本地接口的装置,包括指令载入模块10、指令解释模块30、判断处理模块50以及本地实现模块70。
指令载入模块10,用于载入指令。本实施例中,应用程序在虚拟机中是以指令的形式表达的,虚拟机通过执行指令来实现应用程序的功能。对于函数调用,应用程序进入调用的函数时,被指令载入模块10编译为调用指令,此时,指令载入模块10将该函数所需要的参数放入堆栈或随机存储器中,进而产生指令完成指令的载入。
指令解释模块30,用于解释指令以及指令参数。本实施例中,例如,对于“call gui_init”的指令,在虚拟机中是以“0xAB,”的形式出现的,因此经过指令解释模块30解释可以获知,0xAB为call指令,0xCD,oxEF为gui_init函数的目标地址,即调用的目标地址。
判断处理模块50,用于判断指令是否为调用指令,如果是,则进一步骤判断调用的目标地址是否为本地接口地址,若是,则读取指令参数。本实施例中,判断处理模块50判断指令的类型是否为调用指令,如果是,则需要进入进一步的判断,以获知该指令所调用的目标地址是否为本地接口地址。
本地调用可以是虚拟机对显示屏、定时器、输入输出设备等外设的访问,也可以是对物理计算机上其他本地应用程序的访问,即对本地接口地址的访问,例如,Java虚拟机中的源代码为Java代码,Java虚拟机是以Java代码的形式运行所有指令的,物理计算机上为其它语言(如C语言)编写的应用程序和库,通过本地调用允许物理计算机中的应用程序和库嵌入到Java虚拟机中,实现已有应用程序和库支持Java代码,而不必花费大量的时间与Java虚拟机的源代码相链接,也不需要通过Java指令集等有知识产权的指令集来实现虚拟机的本地调用。
本地实现模块70,用于根据指令参数跳转执行对应的本地接口函数。本实施例中,本地实现模块70取该指令参数。从虚拟机的随机存储器或当前的堆栈中读取执行该指令所需要的指令参数。
另一实施例中,如图3所示,上述虚拟机调用本地接口的装置还包括了执行模块90,该执行模块90用于当指令不是调用指令或调用的目标地址不是本地接口地址时,解释并执行该指令。本实施例中,经过对该指令中目标地址的判断可以获知该指令的执行不需要进行本地调用,因此通过执行模块90直接解释并执行该指令即可,正常运行该指令。
在一个具体的实施例中,如图4所示,上述虚拟机调用本地接口的装置中本地实现模块70包括本地执行单元701以及结果存储单元703。
本地执行单元701,用于读取指令参数,并根据指令参数执行对应的本地接口函数。
结果存储单元703,用于将本地接口函数的执行结果存储于指令参数中。本实施例中,结果存储单元703将执行结果存储于调用该本地接口函数时所传入的指令参数中。
其它实施例中,上述本地实现模块70还包括了返回执行模块,该返回执行模块用于执行返回指令。本实施例中,返回执行模块通过返回指令的执行返回虚拟机的应用程序中继续执行其它指令。
上述虚拟机调用本地接口的方法及装置对于程序中需要进行本地调用的指令通过直接读取该指令参数来执行该指令,该方法的实现不依赖某种特定指令集,特别是不依赖他方有知识产权的指令集,从而使虚拟机调用本地接口的方法更灵活,不需要通过真实硬件进行指令参数的读取以及执行指令,极大地提高了反应速度。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (8)
1.一种虚拟机调用本地接口的方法,包括以下步骤:
载入指令;
解释所述指令以及指令参数;
判断所述指令是否为调用指令,如果是,则判断调用的目标地址是否为本地接口地址,若是,则读取所述指令参数;
根据所述指令参数跳转执行对应的本地接口函数。
2.根据权利要求1所述的虚拟机调用本地接口的方法,其特征在于,还包括:
当所述指令不是调用指令或调用的目标地址不是本地接口地址时,解释并执行所述指令。
3.根据权利要求1所述的虚拟机调用本地接口的方法,其特征在于,所述根据所述指令参数跳转执行对应的本地接口函数的步骤之后还包括:
将所述本地接口函数的执行结果存储于所述指令参数中。
4.根据权利要求3所述的虚拟机调用本地接口的方法,其特征在于,所述将所述本地接口函数的执行结果存储于所述的指令参数中的步骤之后还包括:
执行返回指令的步骤。
5.一种虚拟机调用本地接口的装置,其特征在于,至少包括:
指令载入模块,用于载入指令;
指令解释模块,用于解释所述指令以及指令参数;
判断处理模块,用于判断所述指令是否为调用指令,如果是,则进一步判断调用的目标地址是否为本地接口地址,若是,则读取所述指令参数;
本地实现模块,用于根据所述指令参数跳转执行对应的本地接口函数。
6.根据权利要求5所述的虚拟机调用本地接口的装置,其特征在于,还包括:
执行模块,用于当所述指令不是调用指令或调用的目标地址不是本地接口地址时,解释并执行所述指令。
7.根据权利要求5所述的虚拟机调用本地接口的装置,其特征在于,所述本地实现模块包括:
本地执行单元,用于读取指令参数,并根据所述指令参数执行对应的本地接口函数;
结果存储单元,用于将所述本地接口函数的执行结果存储于所述指令参数中。
8.根据权利要求7所述的虚拟机调用本地接口的装置,其特征在于,所述本地实现模块还包括:
返回执行模块,用于执行返回指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011101323730A CN102193829A (zh) | 2011-05-20 | 2011-05-20 | 虚拟机调用本地接口的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011101323730A CN102193829A (zh) | 2011-05-20 | 2011-05-20 | 虚拟机调用本地接口的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102193829A true CN102193829A (zh) | 2011-09-21 |
Family
ID=44601937
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011101323730A Pending CN102193829A (zh) | 2011-05-20 | 2011-05-20 | 虚拟机调用本地接口的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102193829A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508694A (zh) * | 2011-10-14 | 2012-06-20 | 深圳市江波龙电子有限公司 | 一种虚拟机文件运行方法及系统 |
CN108255905A (zh) * | 2017-05-04 | 2018-07-06 | 平安科技(深圳)有限公司 | 接口调用数据处理方法、装置和计算机设备 |
WO2019170176A3 (en) * | 2019-06-28 | 2020-04-30 | Alibaba Group Holding Limited | System and method for data processing |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101030241A (zh) * | 2007-04-10 | 2007-09-05 | 北京飞天诚信科技有限公司 | 基于Keil C51的软件保护开发的方法和系统 |
CN101158911A (zh) * | 2007-11-22 | 2008-04-09 | 北京飞天诚信科技有限公司 | .Net程序保护方法及装置 |
CN101188624A (zh) * | 2007-12-07 | 2008-05-28 | 华中科技大学 | 基于虚拟机的网格中间件系统 |
CN101231597A (zh) * | 2008-02-01 | 2008-07-30 | 东信和平智能卡股份有限公司 | 智能卡中java程序指令的执行方法 |
-
2011
- 2011-05-20 CN CN2011101323730A patent/CN102193829A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101030241A (zh) * | 2007-04-10 | 2007-09-05 | 北京飞天诚信科技有限公司 | 基于Keil C51的软件保护开发的方法和系统 |
CN101158911A (zh) * | 2007-11-22 | 2008-04-09 | 北京飞天诚信科技有限公司 | .Net程序保护方法及装置 |
CN101188624A (zh) * | 2007-12-07 | 2008-05-28 | 华中科技大学 | 基于虚拟机的网格中间件系统 |
CN101231597A (zh) * | 2008-02-01 | 2008-07-30 | 东信和平智能卡股份有限公司 | 智能卡中java程序指令的执行方法 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508694A (zh) * | 2011-10-14 | 2012-06-20 | 深圳市江波龙电子有限公司 | 一种虚拟机文件运行方法及系统 |
CN102508694B (zh) * | 2011-10-14 | 2015-05-06 | 深圳市江波龙电子有限公司 | 一种虚拟机文件运行方法及系统 |
CN108255905A (zh) * | 2017-05-04 | 2018-07-06 | 平安科技(深圳)有限公司 | 接口调用数据处理方法、装置和计算机设备 |
WO2018201978A1 (zh) * | 2017-05-04 | 2018-11-08 | 平安科技(深圳)有限公司 | 接口调用数据处理方法、装置、计算机设备和存储介质 |
CN108255905B (zh) * | 2017-05-04 | 2019-10-01 | 平安科技(深圳)有限公司 | 接口调用数据处理方法、装置和计算机设备 |
WO2019170176A3 (en) * | 2019-06-28 | 2020-04-30 | Alibaba Group Holding Limited | System and method for data processing |
US10713176B2 (en) | 2019-06-28 | 2020-07-14 | Alibaba Group Holding Limited | System and method for data processing |
US10877899B2 (en) | 2019-06-28 | 2020-12-29 | Advanced New Technologies Co., Ltd. | System and method for data processing |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103064796B (zh) | 虚拟机内存的共享方法与计算机系统 | |
CN109325195A (zh) | 浏览器的渲染方法和系统、计算机设备、计算机存储介质 | |
CN102810040B (zh) | 一种显示处理方法、装置及计算机系统 | |
CN103440457B (zh) | 基于进程模拟的二进制程序分析系统 | |
CN102929656A (zh) | 使用浏览器中内置ActiveX插件的方法和客户端 | |
CN107193577A (zh) | 一种应用启动方法、装置和智能终端 | |
CN108093652A (zh) | 应用的模拟 | |
CN104932972B (zh) | 一种反动态调试应用程序的方法及装置 | |
CN105975816A (zh) | 移动终端下基于虚拟技术的代码保护方法及系统 | |
CN104636275A (zh) | 一种mcu芯片的信息保护方法和装置 | |
CN103617120A (zh) | 一种单元测试方法和装置 | |
CN103309800A (zh) | 一种网页自动化测试方法和系统 | |
CN105843697B (zh) | 一种浏览器控件的中断恢复方法及系统 | |
CN102193829A (zh) | 虚拟机调用本地接口的方法及装置 | |
RU2616164C9 (ru) | Способы и устройство для работы браузерного движка | |
CN103678099B (zh) | 一种实现硬件平台与软件平台通讯的方法以及装置 | |
CN103631480A (zh) | 一种视图对象控制方法及电子设备 | |
CN104063329B (zh) | 64位立即数处理方法及装置 | |
TW201003525A (en) | Sharing operating system sub-processes across tasks | |
CN107180168A (zh) | 文件加载、生成方法和装置,以及智能终端 | |
CN104317723A (zh) | 一种驱动程序运行信息的跟踪方法及系统 | |
CN103019865B (zh) | 虚拟机监控方法和系统 | |
CN102331961A (zh) | 并行模拟多个处理器的方法及系统、调度器 | |
CN103077016B (zh) | 一种活动对象创建方法、装置及浏览器 | |
CN102542525B (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 | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20110921 |