代码编译的方法、装置、电子设备以及服务器与流程

文档序号:24412398发布日期:2021-03-26 19:52阅读:71来源:国知局
1.本申请涉计算机
技术领域
:,更具体地,涉及一种代码编译的方法、装置、电子设备以及服务器。
背景技术
::2.操作系统的代码可能是由多种代码组成的。例如,android系统的代码主要是由c/c++和java组成,比如android系统中的androidframework层的代码主要是java语言编写。为了便于电子设备运行操作系统,可以对操作系统的代码进行编译以得到电子设备可以执行的机器码。但是,基于相关编译方式所得到的机器码还存在执行效率不佳的问题。技术实现要素:3.鉴于上述问题,本申请提出了一种代码编译的方法、装置、电子设备以及服务器,以改善上述问题。4.第一方面,本申请提供了一种代码编译的方法,应用于服务器,所述方法包括:获取操作系统中待编译的源码;调用第一编译模块将所述源码编译为中间字节码;基于所述中间字节码,生成指定格式的中间代码,所述指定格式为第二编译模块的输入数据对应的格式,所述第二编译模块为llvm编译模块;调用所述第二编译模块将所述中间代码编译为机器码。5.第二方面,本申请提供了一种代码编译的装置,运行于服务器,所述装置包括:源码获取单元,用于获取操作系统中待编译的源码;第一编译单元,用于调用第一编译模块将所述源码编译为中间字节码;中间代码生成单元,用于基于所述中间字节码,生成指定格式的中间代码,所述指定格式为第二编译模块的输入数据对应的格式,所述第二编译模块为llvm编译模块;第二编译单元,用于调用所述第二编译模块将所述中间代码编译为机器码。6.第三方面,本申请提供了一种服务器,包括一个或多个处理器以及存储器;一个或多个程序,其中所述一个或多个程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行上述的方法。7.第四方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有程序代码,其中,在所述程序代码运行时执行上述的方法。8.本申请提供的一种代码编译的方法、装置、电子设备以及服务器,先获取操作系统中待编译的源码,调用第一编译模块将所述源码编译为中间字节码,然后基于所述中间字节码,生成第二编译模块的输入数据对应的指定格式的中间代码,其中,所述第二编译模块为llvm编译模块,然后调用所述第二编译模块将所述中间代码编译为机器码。从而通过将源码编译得到的中间字节码转换为符合llvm编译模块的输入数据的对应格式的中间代码的方式,使得可以将生成的该中间字节码用llvm编译模块编译为机器码,进而有利于提升所得到的机器码的质量,进而提升执行该机器码的电子设备的执行效率。附图说明9.为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。10.图1示出了本申请实施例提出的一种代码编译的方法的运行环境示意图;11.图2示出了本申请实施例提出的一种代码编译的方法的流程图;12.图3示出了本申请实施例中从源码到机器码的过程示意图;13.图4示出了本申请另一实施例提出的一种代码编译的方法的流程图;14.图5示出了本申请实施例中对基本块中的子代码进行转换的示意图;15.图6示出了本申请再一实施例提出的一种代码编译的方法的流程图;16.图7示出了本申请另一实施例提出的一种代码编译的方法的流程图;17.图8示出了本申请提出的一种代码编译的装置的结构框图;18.图9示出了本申请的用于执行根据本申请实施例的代码编译的方法的电子设备的结构框图。19.图10是本申请实施例的用于保存或者携带实现根据本申请实施例的图像处理方法的程序代码的存储单元。具体实施方式20.下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。21.操作系统(operatingsystem,简称os)是管理计算机硬件与软件资源的计算机程序。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。而在操作系统中可以包括有多种的代码。例如,android系统的代码主要是由c/c++和java组成,比如android系统中的androidframework层的代码主要是java语言编写。22.而为了便于安装有操作系统的电子设备可以运行操作系统,可以对操作系统中的源码进行编译,以得到电子设备可以直接执行的机器码。例如,对于操作系统中所包括的java代码,可以使用java的编译器前端(javacompiler,javac),将java代码编译成class(java字节码),然后使用dx/d8,将class(java字节码)翻译成dex字节码,再使用dex2oat对前述的dex字节码做提前编译生成机器码。23.但是,发明人在对相关的编译过程进行研究中发现,基于相关编译方式所得到的机器码还存在执行效率不佳的问题。具体的,相关的编译方式中会使用dex2oat对dex字节码做提前编译生成机器码,但是dex2oat本身是面向电子设备所设计的,而考虑到手机本身的资源有限的问题,dex2oat在进行编译的过程中所生成的机器码的优化力度不够,进而会造成所生成的机器码质量较差,会使得电子设备在执行过程中会有较大概率的卡顿的问题。24.因此,提出了申请提供的代码编译的方法、装置、电子设备以及服务器,先获取操作系统中待编译的源码,调用第一编译模块将所述源码编译为中间字节码,然后基于所述中间字节码,生成第二编译模块的输入数据对应的指定格式的中间代码,其中,所述第二编译模块为llvm编译模块,然后调用所述第二编译模块将所述中间代码编译为机器码。从而通过将源码编译得到的中间字节码转换为符合llvm编译模块的输入数据的对应格式的中间代码的方式,使得可以将生成的该中间字节码用llvm编译模块编译为机器码,进而有利于提升所得到的机器码的质量,进而提升执行该机器码的电子设备的执行效率。25.下面先对本申请实施例所涉及的一种场景进行介绍。26.本申请实施例提供的代码编译的方法可以运行于单一服务器中,也可以由多个服务器共同执行,例如,如图1所示,可以通过第一服务器110以及第二服务器120共同来运行。在由第一服务器110以及第二服务器120共同来运行的这种方式中,可以由第一服务器110负责获取操作系统中待编译的源码;调用第一编译模块将所述源码编译为中间字节码;然后由第二服务器120来执行后续的基于所述中间字节码,生成指定格式的中间代码,所述指定格式为第二编译模块的输入数据对应的格式,所述第二编译模块为llvm编译模块;调用所述第二编译模块将所述中间代码编译为机器码。此外,也可以配置本实施例所提供的代码编译的方法的每个步骤分别由一个单独的服务器来执行。27.其中,第一服务器110以及第二服务器120均可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn、以及大数据和人工智能平台等基础云计算服务的云服务器。其中,运行最终输出的机器码的电子设备可以为智能手机外,还可以是平板电脑、笔记本电脑、台式计算机、智能手表等,但并不局限于此。28.下面将结合具体实施例对本申请内容进行介绍。29.请参阅图2,本申请提供的一种代码编译的方法,应用于服务器,所述方法包括:30.s110:获取操作系统中待编译的源码。31.其中,可以理解的是,该操作系统可以理解为待进行编译的操作系统,而本实施例提供的代码编译的方法为针对操作系统所包括的源码进行编译的,进而在开始阶段可以先获取到待进行编译的操作系统中待编译的源码。32.可选的,在本实施例中,操作系统中待编译的源码可以为操作系统所包括的部分源码,也可以为操作系统所包括的所有源码。33.s120:调用第一编译模块将所述源码编译为中间字节码。34.其中,字节可以理解为计算机中的数据量单位,而字节码(byte‑code)是一种包含执行程序,由一序列op代码/数据对组成的二进制文件,是一种中间码。本实施例中的中间字节码可以为class(java字节码),也可以为dex字节码。35.需要说明的是,中间字节码的类型不同,那么所对应的第一编译模块也不同。可选的,若中间字节码为class(java字节码),那么第一编译模块可以为javac,若中间字节码为dex字节码,那么第一编译模块可以为dx/d8。36.s130:基于所述中间字节码,生成指定格式的中间代码,所述指定格式为第二编译模块的输入数据对应的格式,所述第二编译模块为llvm编译模块。37.需要说明的是,在本实施例中在不同的编译阶段所使用的编译模块会有所不同。对应的,不同的编译模块对应的输入数据的格式也会有所不同。那么若为了满足llvm(lowlevelvirtualmachine)编译模块的输入数据的格式需求,则可以基于中间字节码生成对应的指定格式的中间代码,其中,本实施例中的指定格式的中间代码可以为llvmir。38.其中,llvm是构架编译器(compiler)的框架系统,以c++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile‑time)、链接时间(link‑time)、运行时间(run‑time)以及空闲时间(idle‑time)。llvm核心库提供了与编译器相关的支持,可以作为多种语言编译器的后台来使用。能够进行程序语言的编译期优化、链接优化、在线编译优化、代码生成。39.那么基于前述内容在本实施例中,生成指定格式的中间代码可以为llvmir。40.s140:调用所述第二编译模块将所述中间代码编译为机器码。41.其中,机器码为电子设备后续可以直接识别并执行的代码。可选的,本实施例中所生成的机器码可以为odex格式的文件。42.需要说明的是,在本实施例中第一编译模块和第二编译模块可以为相互独立的两个编译器。也可以为同一个编译器的两个模块,在为同一个编译器的两个模块的这种方式中,第一编译模块可以理解为编译器前端,而第二编译模块可以理解为编译器后端。43.如图3所示,在本申请实施例中从源码到机器码的过程可以包括依次对源码进行词法分析、语法分析以及语义分析并得到语法树。然后基于语法树再输入到高阶的优化器进行处理得到高阶的ir(llvmir),然后对高阶的ir输入到低阶的优化器进行处理得到低阶ir,进而基于低阶ir得到机器码。其中,从源码到语法树的阶段可以由第一编译模块执行。后续的高阶的优化器和低阶的优化器均属于第二编译模块。44.本实施例提供的一种代码编译的方法,先获取操作系统中待编译的源码,调用第一编译模块将所述源码编译为中间字节码,然后基于所述中间字节码,生成第二编译模块的输入数据对应的指定格式的中间代码,其中,所述第二编译模块为llvm编译模块,然后调用所述第二编译模块将所述中间代码编译为机器码。从而通过将源码编译得到的中间字节码转换为符合llvm编译模块的输入数据的对应格式的中间代码的方式,使得可以将生成的该中间字节码用llvm编译模块编译为机器码,进而有利于提升所得到的机器码的质量,进而提升执行该机器码的电子设备的执行效率。45.请参阅图4,本申请提供的一种代码编译的方法,应用于服务器,所述方法包括:46.s210:获取操作系统中待编译的源码。47.s220:调用第一编译模块将所述源码编译为中间字节码。48.s230:创建llvm基本块。49.需要说明的是,基本块可以为编译过程中的基本单元,也可以理解为是程序中最大限度顺序执行的语句序列,其中只有一个入口和出口,入口是其第一个语句,出口是其最后一个语句。其中,基本块的入口语句可能是程序的第一个语句、跳转的目标语句或者是条件跳转的下一条语句。基本块的结束语句可能是停机语句、跳转语句或者跳转目标语句的前一个语句(词法序)。而在本实施例中,会针对中间字节码所生成的制定法格式的中间代码为llvmir,那么为了得到llvmir则可以先得到组成llvmir的llvm基本块。50.作为一种方式,所述创建llvm基本块,包括:遍历所述中间字节码中的每个基本块(basicblock),针对每个基本块创建对应的llvm基本块。需要说明的是,中间字节码会包括有多个基本块,那么可以依次编译中间字节码所包括的多个基本块,并针对所遍历得到的基本块建立对应的llvm基本块。其中,可选的,可以基于索引的方式将相互对应的基本块以及llvm基本块进行关联。51.其中,若存在第一基本块则在所述第一基本块对应的llvm基本块中创建存储区域,所述第一基本块为中间字节码中存在操作数栈的基本块;若存在第二基本块则在所述第二基本块对应的llvm基本块中创建存储区域,所述第二基本块为中间字节码中存在局部变量的基本块。可选的,其中的存储区域可以为alloca区域。52.需要说明的是,局部变量存储在局部变量表(localvariabletable)中。该局部变量表是一组变量值存储空间,用于存放方法参数和方法内定义的局部变量。局部变量表的容量以变量槽(variableslot)为最小单位。一个局部变量可以保存一个类型为boolean、byte、char、short、int、float、reference和returnaddress类型的数据。其中,以java虚拟机为例,java虚拟机通过索引定位的方法查找相应的局部变量,索引的范围是从0~局部变量表最大容量。如果slot是32位的,则遇到一个64位数据类型的变量(如long或double型),则会连续使用两个连续的slot来存储。53.需要说明的是,操作数栈(operandstack)也常称为操作栈,它是一个后入先出栈(lifo)。同局部变量表一样,操作数栈的最大深度也在编译的时候写入到方法的code属性的max_stacks数据项中。操作数栈的每一个元素可以是任意java数据类型,32位的数据类型占一个栈容量,64位的数据类型占2个栈容量,且在方法执行的任意时刻,操作数栈的深度都不会超过max_stacks中设置的最大值。当一个方法代码刚刚开始执行时,其该方法代码所在的基本块的操作数栈可以是空的,随着方法代码执行和字节码指令的执行,会从局部变量表或对象实例的字段中复制常量或变量写入到操作数栈,再随着计算的进行将栈中元素出栈到局部变量表或者返回给方法代码调用者,也就是出栈/入栈操作。其中,一个完整的方法代码的执行期间往往包含多个这样出栈/入栈的过程。54.需要说明的是,在维护操作数栈的过程中,可以根据java计算模型,进行java操作数栈建模。java代码对应的操作数栈中,存储long和double的局部变量或者操作数栈时,需要占用两个槽位(slot)。为了简化指令操作,在slot中存储操作数时,可以不包含类型信息,这样就可以不用为long和double的槽位特殊处理,进而降低编译过程中的数据处理复杂度。55.s240:基于所述llvm基本块,生成与所述中间字节码对应的指定格式的中间代码,所述指定格式为第二编译模块的输入数据对应的格式,所述第二编译模块为llvm编译模块。56.作为一种方式,所述基于所述llvm基本块,生成与所述中间字节码对应的指定格式的中间代码,包括:将所述中间字节码中的每个基本块中的子代码转换为各自对应的指定格式的子代码(例如,llvmir),所述子代码包括操作数栈、局部变量以及方法代码中的至少一个;将每个所述基本块各自对应的指定格式的子代码写入到,每个基本块各自对应的llvm基本块中,得到每个基本块对应的写入有子代码的llvm基本块;基于每个基本块对应的写入有子代码的llvm基本块得到指定格式的中间代码。57.示例性的,如图5所示,其中中间字节码可以包括有多个基本块10,而针对基本块10中的子代码可以转换为指定格式的子代码21,然后将指定格式的子代码21写入到与基本块10对应的llvm基本块20中,进而得到了基本块10对应的写入有子代码的llvm基本块20。58.需要说明的是,在转换子代码中的方法代码时,可以采用visitor模式,并根据instruction做翻译操作,转成llvmir中的instruction。59.s250:调用所述第二编译模块将所述中间代码编译为机器码。60.本实施例提供的一种代码编译的方法,通过将源码编译得到的中间字节码转换为符合llvm编译模块的输入数据的对应格式的中间代码的方式,使得可以将生成的该中间字节码用llvm编译模块编译为机器码,进而有利于提升所得到的机器码的质量,进而提升执行该机器码的电子设备的执行效率。并且,在本实施例中,会先遍历所述中间字节码中的每个基本块,针对每个基本块创建对应的llvm基本块,并且针对对应有操作数栈或者局部变量的基本块,还会在对应有操作数栈或者局部变量的基本块所对应的llvm基本块中建立存储区域,以便可以对操作数栈或者局部变量进行维护,而在建立完成llvm基本块后,则可以将中间字节码的基本块中的子代码转换为指定格式后写入到llvm基本块中,得到写入有子代码的llvm基本块,进而基于每个基本块对应的写入有子代码的llvm基本块得到指定格式的中间代码。61.请参阅图6,本申请提供的一种代码编译的方法,应用于服务器,所述方法包括:62.s310:获取操作系统中待编译的源码。63.s320:调用第一编译模块将所述源码编译为中间字节码,其中,所述第一编译模块编译得到的中间字节码为第一字节格式的中间字节码。64.s330:获取目标编译条件。65.需要说明的是,本实施例中目标编译条件可以表征所编译得到的机器码的运行需求。其中,不同的字节格式所转换得到中间代码最终所编译得到的机器码的运行特性是会有所不同的。例如,对于class(字节码)而言具有较好的兼容性,继而基于class(字节码)转换得到的中间代码所得到的机器码具有较高的兼容性。那么作为一种方式,本实施例中的目标编译条件为所生成的机器码具有兼容性。作为一种方式,所述第一字节格式的中间字节码为class字节码,所述第二字节格式的中间字节码为dex字节码。其中,本实施例中的class字节码可以理解为java字节码。66.s331:检测所述中间字节码是否与所述目标编译条件匹配。67.s340:若所述中间字节码与所述目标编译条件匹配,基于所述中间字节码,生成指定格式的中间代码。68.s350:若所述中间字节码与所述目标编译条件不匹配,将所述中间字节码转换为第二字节格式的中间字节码。69.s360:基于所述第二字节格式的中间字节码,生成指定格式的中间代码,所述指定格式为第二编译模块的输入数据对应的格式,所述第二编译模块为llvm编译模块;70.s370:调用所述第二编译模块将所述中间代码编译为机器码。71.本实施例提供的一种代码编译的方法,通过将源码编译得到的中间字节码转换为符合llvm编译模块的输入数据的对应格式的中间代码的方式,使得可以将生成的该中间字节码用llvm编译模块编译为机器码,进而有利于提升所得到的机器码的质量,进而提升执行该机器码的电子设备的执行效率。并且,在本身实施例中由第一编译模块编译得到的中间字节码为第一字节格式的中间字节码,进而在得到第一字节格式的中间字节码后会先检测第一字节格式的中间字节码与目标编译条件是否匹配,并在匹配后,基于第一字节格式的中间字节码,生成指定格式的中间代码,若不匹配,则将所述第一字节格式的中间字节码转换为第二字节格式的中间字节码,进而基于所述第二字节格式的中间字节码,生成指定格式的中间代码,从而使得在本实施例中可以根据目标编译条件来确定具体是从那种格式的中间字节码转换得到中间代码,继而提升了整个编译过程的灵活性。72.请参阅图7,本申请提供的一种代码编译的方法,应用于服务器,所述方法包括:73.s410:获取操作系统中待编译的源码。74.s420:调用第一编译模块将所述源码编译为中间字节码。75.s430:基于所述中间字节码,生成指定格式的中间代码,所述指定格式为第二编译模块的输入数据对应的格式,所述第二编译模块为llvm编译模块。76.s440:获取目标平台,所述目标平台为所述运行所述机器码的平台。77.可选的,本实施例中的目标平台可以为智能手机、平板电脑或者计算机。78.s450:调用所述第二编译模块将所述中间代码编译为所述目标平台对应的机器码。79.需要说明的是,在本实施例中,还可以根据目标平台所包括的硬件的特性来生成适配性的第二编译模块,进而在生成机器码的过程中,可以调用与目标平台的硬件特性匹配的第二编译模块来对中间代码编译为所述目标平台对应的机器码,以便使得所生成的机器码可以更高的适配目标平台。可选的,本实施例中的硬件特性可以为所包括的硬件器件的型号。80.需要说明的是,本申请实施例中基于第二编译模块所编译得到的机器码可以作为操作系统对应的刷机包(rom包)中的机器码。对应的,本申请实施例提供的方法也提升了所生成的刷机包的质量。81.本实施例提供的一种代码编译的方法,通过将源码编译得到的中间字节码转换为符合llvm编译模块的输入数据的对应格式的中间代码的方式,使得可以将生成的该中间字节码用llvm编译模块编译为机器码,进而有利于提升所得到的机器码的质量,进而提升执行该机器码的电子设备的执行效率。并且,在本实施例中可以根据目标平台来生成对应格式的机器码,提升了本实施例中的代码编译的方法的通配性和适应性。82.请参阅图8,本申请提供的一种代码编译的装置500,运行于服务器,所述装置500包括:83.源码获取单元510,用于获取操作系统中待编译的源码;84.第一编译单元520,用于调用第一编译模块将所述源码编译为中间字节码;85.中间代码生成单元530,用于基于所述中间字节码,生成指定格式的中间代码,所述指定格式为第二编译模块的输入数据对应的格式,所述第二编译模块为llvm编译模块;86.第二编译单元540,用于调用所述第二编译模块将所述中间代码编译为机器码。87.作为一种方式,中间代码生成单元530,具体用于创建llvm基本块;基于所述llvm基本块,生成与所述中间字节码对应的指定格式的中间代码。可选的,中间代码生成单元530,具体用于遍历所述中间字节码中的每个基本块,针对每个基本块创建对应的llvm基本块;其中,若存在第一基本块则在所述第一基本块对应的llvm基本块中创建存储区域,所述第一基本块为中间字节码中存在操作数栈的基本块;若存在第二基本块则在所述第二基本块对应的llvm基本块中创建存储区域,所述第二基本块为中间字节码中存在局部变量的基本块。88.可选的,中间代码生成单元530,具体用于将所述中间字节码中的每个基本块中的子代码转换为各自对应的指定格式的子代码,所述子代码包括操作数栈、局部变量以及方法代码中的至少一个;将每个所述基本块各自对应的指定格式的子代码写入到,每个基本块各自对应的llvm基本块中,得到每个基本块对应的写入有子代码的llvm基本块;基于每个基本块对应的写入有子代码的llvm基本块得到指定格式的中间代码。89.作为一种方式,所述第一编译模块编译得到的中间字节码为第一字节格式的中间字节码。在这种方式中,中间代码生成单元530,具体用于获取目标编译条件;若所述中间字节码与所述目标编译条件匹配,基于所述中间字节码,生成指定格式的中间代码;若所述中间字节码与所述目标编译条件不匹配,将所述中间字节码转换为第二字节格式的中间字节码;基于所述第二字节格式的中间字节码,生成指定格式的中间代码。可选的,所述第一字节格式的中间字节码为class字节码,所述第二字节格式的中间字节码为dex字节码。90.作为一种方式,第二编译单元540,具体用于获取目标平台,所述目标平台为所述运行所述机器码的平台;调用所述第二编译模块将所述中间代码编译为所述目标平台对应的机器码。91.本实施例提供的一种代码编译的装置,先获取操作系统中待编译的源码,调用第一编译模块将所述源码编译为中间字节码,然后基于所述中间字节码,生成第二编译模块的输入数据对应的指定格式的中间代码,其中,所述第二编译模块为llvm编译模块,然后调用所述第二编译模块将所述中间代码编译为机器码。从而通过将源码编译得到的中间字节码转换为符合llvm编译模块的输入数据的对应格式的中间代码的方式,使得可以将生成的该中间字节码用llvm编译模块编译为机器码,进而有利于提升所得到的机器码的质量,进而提升执行该机器码的电子设备的执行效率。92.需要说明的是,本申请中装置实施例与前述方法实施例是相互对应的,装置实施例中具体的原理可以参见前述方法实施例中的内容,此处不再赘述。93.下面将结合图9对本申请提供的一种电子设备进行说明。94.请参阅图9,基于上述的图像处理方法、装置,本申请实施例还提供的另一种可以执行前述代码编译的方法的电子设备200。电子设备200包括相互耦合的一个或多个(图中仅示出一个)处理器102、存储器104以及网络模块106。其中,该存储器104中存储有可以执行前述实施例中内容的程序,而处理器102可以执行该存储器104中存储的程序。95.其中,处理器102可以包括一个或者多个处理核。处理器102利用各种接口和线路连接整个电子设备100内的各个部分,通过运行或执行存储在存储器104内的指令、程序、代码集或指令集,以及调用存储在存储器104内的数据,执行电子设备100的各种功能和处理数据。可选地,处理器102可以采用数字信号处理(digitalsignalprocessing,dsp)、现场可编程门阵列(field-programmablegatearray,fpga)、可编程逻辑阵列(programmablelogicarray,pla)中的至少一种硬件形式来实现。处理器102可集成中央处理器(centralprocessingunit,cpu)、图像处理器(graphicsprocessingunit,gpu)和调制解调器等中的一种或几种的组合。其中,cpu主要处理操作系统、用户界面和应用程序等;gpu用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器102中,单独通过一块通信芯片进行实现。96.存储器104可以包括随机存储器(randomaccessmemory,ram),也可以包括只读存储器(read‑onlymemory)。存储器104可用于存储指令、程序、代码、代码集或指令集。存储器104可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等。存储数据区还可以存储终端100在使用中所创建的数据(比如电话本、音视频数据、聊天记录数据)等。97.所述网络模块106用于接收以及发送电磁波,实现电磁波与电信号的相互转换,从而与通讯网络或者其他设备进行通讯,例如和无线接入点进行通讯。所述网络模块106可包括各种现有的用于执行这些功能的电路元件,例如,天线、射频收发器、数字信号处理器、加密/解密芯片、用户身份模块(sim)卡、存储器等等。所述网络模块106,还可以作为网络适配器,用于电子设备200直接通过线路连接的方式接入到网络中。该网络可包括蜂窝式电话网、无线局域网或者城域网。98.请参考图10,其示出了本申请实施例提供的一种计算机可读存储介质的结构框图。该计算机可读介质800中存储有程序代码,所述程序代码可被处理器调用执行上述方法实施例中所描述的方法。99.计算机可读存储介质800可以是诸如闪存、eeprom(电可擦除可编程只读存储器)、eprom、硬盘或者rom之类的电子存储器。可选地,计算机可读存储介质800包括非易失性计算机可读介质(non‑transitorycomputer‑readablestoragemedium)。计算机可读存储介质800具有执行上述方法中的任何方法步骤的程序代码810的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码810可以例如以适当形式进行压缩。100.本申请提供的一种代码编译的方法、装置、电子设备以及服务器,先获取操作系统中待编译的源码,调用第一编译模块将所述源码编译为中间字节码,然后基于所述中间字节码,生成第二编译模块的输入数据对应的指定格式的中间代码,其中,所述第二编译模块为llvm编译模块,然后调用所述第二编译模块将所述中间代码编译为机器码。从而通过将源码编译得到的中间字节码转换为符合llvm编译模块的输入数据的对应格式的中间代码的方式,使得可以将生成的该中间字节码用llvm编译模块编译为机器码,进而有利于通过llvm编译模块中优异的优化器提升所得到的机器码的质量,进而提升执行该机器码的电子设备的执行效率,以及降低机器码在执行过程中出现卡顿的概率。101.最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1