[发明专利]应用程序编译和运行方法及装置、存储介质在审
| 申请号: | 202210072064.7 | 申请日: | 2022-01-21 |
| 公开(公告)号: | CN114443051A | 公开(公告)日: | 2022-05-06 |
| 发明(设计)人: | 黄齐 | 申请(专利权)人: | 北京小米移动软件有限公司 |
| 主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F9/445 |
| 代理公司: | 北京博思佳知识产权代理有限公司 11415 | 代理人: | 陈蕾 |
| 地址: | 100085 北京市海淀*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 应用程序 编译 运行 方法 装置 存储 介质 | ||
本公开提供了一种应用程序编译和运行方法及装置、存储介质。其中,该编译方法包括:从所述应用程序对应的字节码文件中提取待编译信息;构建与所述待编译信息对应的数据结构;基于与所述待编译信息对应的数据结构,对所述字节码文件进行编译,生成中间文件;确定用于对所述中间文件所包括的信息内容进行描述的文件描述信息;基于所述中间文件和所述文件描述信息,生成对所述应用程序进行编译后的目标文件。本公开可以实现应用程序原地执行,节约了物联网设备的大量内存,且适用于多种物联网设备平台,具备在小型甚至微型嵌入式物联网设备系统上使用的价值,可用性和安全性高。
技术领域
本公开涉及软件编译领域,尤其涉及一种应用程序编译和运行方法及装置、存储介质。
背景技术
目前,物联网(Internet of Things,IoT)设备在运行应用程序时,需要将该应用程序对应的代码文件从闪存中复制到内存中,通过内存读取该文件后启动应用程序,从而造成大量的内存消耗。
发明内容
有鉴于此,本申请公开了一种应用程序编译和运行方法及装置、存储介质。
根据本公开实施例的第一方面,提供一种应用程序编译方法,所述方法应用于终端,所述方法包括:
从所述应用程序对应的字节码文件中提取待编译信息;
构建与所述待编译信息对应的数据结构;
基于与所述待编译信息对应的数据结构,对所述字节码文件进行编译,生成中间文件;
确定用于对所述中间文件所包括的信息内容进行描述的文件描述信息;
基于所述中间文件和所述文件描述信息,生成对所述应用程序进行编译后的目标文件。
可选地,所述方法还包括:
对所述字节码文件的完整性和合法性中的至少一项进行验证,确定验证结果;
在所述验证结果指示所述字节码文件为完整文件和/或合法文件的情况下,执行所述从所述应用程序对应的字节码文件中提取待编译信息的步骤。
可选地,所述构建与所述待编译信息对应的数据结构,包括以下至少一项:
在所述待编译信息包括待编译的数据段信息的情况下,确定与所述数据段信息对应的第一内存空间;其中,所述第一内存空间大小与所述数据段信息所指示的数据量相等;
在所述待编译信息包括待编译的代码段信息的情况下,基于所述代码段信息中包括的函数的接口数目,确定至少一个数组;其中,所述数组的数目与所述接口数目相等。
可选地,所述基于与所述待编译信息对应的数据结构,对所述字节码文件进行编译,生成中间文件,包括:
基于与所述待编译信息对应的数据结构,将所述字节码文件所包括的指令转换为底层虚拟机的中间表示;
基于所述中间表示,生成所述中间文件。
可选地,所述基于与所述待编译信息对应的数据结构,将所述字节码文件所包括的代码转换为底层虚拟机的中间表示,包括:
在所述指令包括数据存访指令的情况下,将所述数据访问指令所访问的地址转换为对第一内存空间进行访问的所述中间表示;其中,所述第一内存空间是构建所述数据结构时确定的内存空间;
在所述指令包括函数定义指令的情况下,将所述函数定义指令转换为确定所定义函数的序号并在所定义函数对应的数组中存放所述序号的所述中间表示;其中,所述数组是构建所述数据结构时确定的;
在所述指令包括函数调用指令的情况下,将所述函数调用指令转换为从被调用函数对应的数组中进行调用的所述中间表示;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京小米移动软件有限公司,未经北京小米移动软件有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210072064.7/2.html,转载请声明来源钻瓜专利网。
- 上一篇:空调器升级方法、空调器
- 下一篇:一种新型熔断体加工工艺





