[发明专利]一种原生API调用的方法及装置有效
申请号: | 202310974697.1 | 申请日: | 2023-08-03 |
公开(公告)号: | CN116700841B | 公开(公告)日: | 2023-09-26 |
发明(设计)人: | 赵辉;高景阳 | 申请(专利权)人: | 北京中电华大电子设计有限责任公司 |
主分类号: | G06F9/448 | 分类号: | G06F9/448;G06F9/455 |
代理公司: | 北京博思佳知识产权代理有限公司 11415 | 代理人: | 陈蕾 |
地址: | 100102 北京*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 原生 api 调用 方法 装置 | ||
本说明书公开了一种原生API调用的方法及装置。首先,在与目标应用的应用代码对应的WebAssembly字节码向虚拟机下载的过程中,判断目标应用调用的目标函数是否为原生API,如果是,将原生API注册表中的与目标函数对应的目标原生API的可执行代码地址写入到目标函数。然后,在目标应用调用目标原生API的过程中,将虚拟机栈中的目标原生API的参数的取值拷贝到系统栈,按照系统栈中的目标原生API的参数的取值,执行目标函数,得到目标函数的返回值。最后,将系统栈中的目标函数的返回值拷贝到虚拟机栈中,执行目标应用。从而,在虚拟机执行目标应用时,间接的对原生API进行调用。
技术领域
本说明书涉及计算机技术领域,尤其涉及一种原生API调用的方法及装置。
背景技术
WebAssembly是一种能够将其他编程语言编译为浏览器可执行的二进制文件的技术。例如,为诸如C/C++等语言提供一个编译目标,以便它们可以在Web上运行。也就是说,WebAssembly并不是一门编程语言,而是一份字节码标准,需要用高级编程语言编译出WebAssembly字节码放到虚拟机中才能运行。
目前,WebAssembly字节码在虚拟机上运行,没有直接访问计算机的本地资源(如磁盘、网络、文件系统等)的权限。并且,操作系统中的原生API通过操作系统的编程语言进行编写,不能转换为WebAssembly字节码,也不能在虚拟机的解释器中执行,从而,导致虚拟机无法直接调用原生API。
因此,如何通过WebAssembly字节码对原生API进行调用,则是一个亟待解决的问题。
发明内容
本说明书提供一种原生API调用的方法、装置、电子设备及机器可读存储介质,以通过WebAssembly字节码对原生API进行调用。
本说明书采用下述技术方案:
本说明书提供了一种原生API调用的方法,所述方法应用于电子设备上搭载的用于运行应用的虚拟机,所述虚拟机的内存空间中存储有由若干个原生API的信息组成的原生API注册表,所述原生API的信息包括:可执行代码地址、参数,包括:
在与目标应用的应用代码对应的WebAssembly字节码向所述虚拟机下载的过程中,判断所述目标应用调用的目标函数是否为原生API,如果是,将所述原生API注册表中的与所述目标函数对应的目标原生API的可执行代码地址写入到所述目标函数;
在所述目标应用调用目标原生API的过程中,将虚拟机栈中的所述目标原生API的参数的取值拷贝到系统栈,以使所述电子设备上搭载的操作系统在与所述目标原生API的可执行代码地址上,按照所述系统栈中的所述目标原生API的参数的取值,执行所述目标函数,得到所述目标函数的返回值;
将所述系统栈中的所述目标函数的返回值拷贝到所述虚拟机栈中,执行所述目标应用。
可选地,所述电子设备包括:资源受限设备。
可选地,所述原生API的信息还包括:原生API标识;
在如果是,将所述原生API注册表中的与所述目标函数对应的目标原生API的可执行代码地址写入到所述目标函数之前,所述方法还包括:
如果是,判断所述原生API注册表中是否存在与所述目标函数的API标识相同的原生API标识;
如果是,判断所述原生API注册表中是否存在与所述目标函数的参数相同的原生API的参数。
可选地,在判断所述原生API注册表中是否存在与所述目标函数的API标识相同的原生API标识之前,所述方法还包括:
按照预设的校验算法,对所述原生API注册表中的原生API标识进行运算,得到所述原生API注册表中的原生API标识的运算结果;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京中电华大电子设计有限责任公司,未经北京中电华大电子设计有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202310974697.1/2.html,转载请声明来源钻瓜专利网。