代码编译的方法、装置、电子设备以及服务器制造方法及图纸

技术编号:27814898 阅读:11 留言:0更新日期:2021-03-30 10:05
本申请实施例公开了一种代码编译的方法、装置、电子设备以及服务器。方法包括:获取操作系统中待编译的源码;调用第一编译模块将源码编译为中间字节码;基于中间字节码,生成指定格式的中间代码,指定格式为第二编译模块的输入数据对应的格式,第二编译模块为LLVM编译模块;调用第二编译模块将中间代码编译为机器码。从而通过将源码编译得到的中间字节码转换为符合LLVM编译模块的输入数据的对应格式的中间代码的方式,使得可以将生成的该中间字节码用LLVM编译模块编译为机器码,进而有利于通过LLVM编译模块中优异的优化器提升所得到的机器码的质量,进而提升执行该机器码的电子设备的执行效率,以及降低机器码在执行过程中出现卡顿的概率。现卡顿的概率。现卡顿的概率。

【技术实现步骤摘要】
代码编译的方法、装置、电子设备以及服务器


[0001]本申请涉计算机
,更具体地,涉及一种代码编译的方法、装置、电子设备以及服务器。

技术介绍

[0002]操作系统的代码可能是由多种代码组成的。例如,Android系统的代码主要是由C/C++和Java组成,比如Android系统中的Android Framework层的代码主要是Java语言编写。为了便于电子设备运行操作系统,可以对操作系统的代码进行编译以得到电子设备可以执行的机器码。但是,基于相关编译方式所得到的机器码还存在执行效率不佳的问题。

技术实现思路

[0003]鉴于上述问题,本申请提出了一种代码编译的方法、装置、电子设备以及服务器,以改善上述问题。
[0004]第一方面,本申请提供了一种代码编译的方法,应用于服务器,所述方法包括:获取操作系统中待编译的源码;调用第一编译模块将所述源码编译为中间字节码;基于所述中间字节码,生成指定格式的中间代码,所述指定格式为第二编译模块的输入数据对应的格式,所述第二编译模块为LLVM编译模块;调用所述第二编译模块将所述中间代码编译为机器码。
[0005]第二方面,本申请提供了一种代码编译的装置,运行于服务器,所述装置包括:源码获取单元,用于获取操作系统中待编译的源码;第一编译单元,用于调用第一编译模块将所述源码编译为中间字节码;中间代码生成单元,用于基于所述中间字节码,生成指定格式的中间代码,所述指定格式为第二编译模块的输入数据对应的格式,所述第二编译模块为LLVM编译模块;第二编译单元,用于调用所述第二编译模块将所述中间代码编译为机器码。
[0006]第三方面,本申请提供了一种服务器,包括一个或多个处理器以及存储器;一个或多个程序,其中所述一个或多个程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行上述的方法。
[0007]第四方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有程序代码,其中,在所述程序代码运行时执行上述的方法。
[0008]本申请提供的一种代码编译的方法、装置、电子设备以及服务器,先获取操作系统中待编译的源码,调用第一编译模块将所述源码编译为中间字节码,然后基于所述中间字节码,生成第二编译模块的输入数据对应的指定格式的中间代码,其中,所述第二编译模块为LLVM编译模块,然后调用所述第二编译模块将所述中间代码编译为机器码。从而通过将源码编译得到的中间字节码转换为符合LLVM编译模块的输入数据的对应格式的中间代码的方式,使得可以将生成的该中间字节码用LLVM编译模块编译为机器码,进而有利于提升所得到的机器码的质量,进而提升执行该机器码的电子设备的执行效率。
附图说明
[0009]为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0010]图1示出了本申请实施例提出的一种代码编译的方法的运行环境示意图;
[0011]图2示出了本申请实施例提出的一种代码编译的方法的流程图;
[0012]图3示出了本申请实施例中从源码到机器码的过程示意图;
[0013]图4示出了本申请另一实施例提出的一种代码编译的方法的流程图;
[0014]图5示出了本申请实施例中对基本块中的子代码进行转换的示意图;
[0015]图6示出了本申请再一实施例提出的一种代码编译的方法的流程图;
[0016]图7示出了本申请另一实施例提出的一种代码编译的方法的流程图;
[0017]图8示出了本申请提出的一种代码编译的装置的结构框图;
[0018]图9示出了本申请的用于执行根据本申请实施例的代码编译的方法的电子设备的结构框图。
[0019]图10是本申请实施例的用于保存或者携带实现根据本申请实施例的图像处理方法的程序代码的存储单元。
具体实施方式
[0020]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0021]操作系统(Operating System,简称OS)是管理计算机硬件与软件资源的计算机程序。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。而在操作系统中可以包括有多种的代码。例如,Android系统的代码主要是由C/C++和Java组成,比如Android系统中的Android Framework层的代码主要是Java语言编写。
[0022]而为了便于安装有操作系统的电子设备可以运行操作系统,可以对操作系统中的源码进行编译,以得到电子设备可以直接执行的机器码。例如,对于操作系统中所包括的java代码,可以使用Java的编译器前端(Java Compiler,javac),将Java代码编译成class(Java字节码),然后使用dx/d8,将class(Java字节码)翻译成dex字节码,再使用dex2oat对前述的dex字节码做提前编译生成机器码。
[0023]但是,专利技术人在对相关的编译过程进行研究中发现,基于相关编译方式所得到的机器码还存在执行效率不佳的问题。具体的,相关的编译方式中会使用dex2oat对dex字节码做提前编译生成机器码,但是dex2oat本身是面向电子设备所设计的,而考虑到手机本身的资源有限的问题,dex2oat在进行编译的过程中所生成的机器码的优化力度不够,进而会造成所生成的机器码质量较差,会使得电子设备在执行过程中会有较大概率的卡顿的问题。
[0024]因此,提出了申请提供的代码编译的方法、装置、电子设备以及服务器,先获取操作系统中待编译的源码,调用第一编译模块将所述源码编译为中间字节码,然后基于所述中间字节码,生成第二编译模块的输入数据对应的指定格式的中间代码,其中,所述第二编译模块为LLVM编译模块,然后调用所述第二编译模块将所述中间代码编译为机器码。从而通过将源码编译得到的中间字节码转换为符合LLVM编译模块的输入数据的对应格式的中间代码的方式,使得可以将生成的该中间字节码用LLVM编译模块编译为机器码,进而有利于提升所得到的机器码的质量,进而提升执行该机器码的电子设备的执行效率。
[0025]下面先对本申请实施例所涉及的一种场景进行介绍。
[0026]本申请实施例提供的代码编译的方法可以运行于单一服务器中,也可以由多个服务器共同执行,例如,如图1所示,可以通过第一服务器110以及第二服务器120共同来运行。在由第一服务器110以及第二服务器120共同来运行的这种方式中,可以由第一服务器1本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种代码编译的方法,其特征在于,应用于服务器,所述方法包括:获取操作系统中待编译的源码;调用第一编译模块将所述源码编译为中间字节码;基于所述中间字节码,生成指定格式的中间代码,所述指定格式为第二编译模块的输入数据对应的格式,所述第二编译模块为LLVM编译模块;调用所述第二编译模块将所述中间代码编译为机器码。2.根据权利要求1所述的方法,其特征在于,所述基于所述中间字节码,生成指定格式的中间代码,包括:创建LLVM基本块;基于所述LLVM基本块,生成与所述中间字节码对应的指定格式的中间代码。3.根据权利要求2所述的方法,其特征在于,所述创建LLVM基本块,包括:遍历所述中间字节码中的每个基本块,针对每个基本块创建对应的LLVM基本块;其中,若存在第一基本块则在所述第一基本块对应的LLVM基本块中创建存储区域,所述第一基本块为中间字节码中存在操作数栈的基本块;若存在第二基本块则在所述第二基本块对应的LLVM基本块中创建存储区域,所述第二基本块为中间字节码中存在局部变量的基本块。4.根据权利要求3所述的方法,其特征在于,所述基于所述LLVM基本块,生成与所述中间字节码对应的指定格式的中间代码,包括:将所述中间字节码中的每个基本块中的子代码转换为各自对应的指定格式的子代码,所述子代码包括操作数栈、局部变量以及方法代码中的至少一个;将每个所述基本块各自对应的指定格式的子代码写入到,每个基本块各自对应的LLVM基本块中,得到每个基本块对应的写入有子代码的LLVM基本块;基于每个基本块对应的写入有子代码的LLVM基本块得到指定格式的中间代码。5.根据权利要求1

4任一所述的方法,其特征在于,所述第一编译模块编译得到的中间字节码为第一字节格式的中间字节码,所述基于所述中间字...

【专利技术属性】
技术研发人员:胡岳伟吴价刘圆圆
申请(专利权)人:OPPO广东移动通信有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1