代码编译方法和装置的制造方法

文档序号:10511981阅读:155来源:国知局
代码编译方法和装置的制造方法
【专利摘要】本发明涉及编译优化,公开了一种代码编译方法,该代码编译方法包括:确定至少一个芯片平台的公共代码和至少一个变量代码;确定从所述至少一个芯片平台中选定的芯片平台的变量代码配置;加载所述变量代码配置至编译模块;以及所述编译模块根据从所述至少一个芯片平台中选定的芯片平台的所述公共代码和变量代码进行代码编译以得到目标代码。本发明提供的代码编译方法和代码编译装置不用重复配置代码工具,可以实现快速代码编译。
【专利说明】
代码编译方法和装置
技术领域
[0001]本发明涉及编译优化,具体地,涉及一种代码编译方法和一种代码编译装置。
【背景技术】
[0002]代码编译工具就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。高级计算机语言便于人编写,阅读交流和维护,机器语言是计算机能直接解读、运行的。编译器将汇编或高级计算机语言源程序(Source program)作为输入,翻译成目标语言(Target language)机器代码的等价程序。源代码一般为高级语言(High-levellanguage),如Pascal、C、C++、Java、汉语编程等或汇编语言,而目标则是机器语言的目标代码(Object code),有时也称作机器代码(Machine code)。
[0003]现有技术中,根据不同的芯片平台需要不同的代码编译工具。根据芯片类型的不同,代码编译工具中的各项代码配置也不同,使用时需要重新配置代码工具,甚至重新安装。

【发明内容】

[0004]本发明的目的是提供一种代码编译方法和一种代码编译装置,该代码编译方法和代码编译装置不用重复配置代码工具,可以实现快速代码编译。
[0005]为了实现上述目的,本发明提供一种代码编译方法,该代码编译方法包括:确定至少一个芯片平台的公共代码和至少一个变量代码;确定从所述至少一个芯片平台中选定的芯片平台的变量代码配置;加载所述变量代码配置至编译模块;以及所述编译模块根据从所述至少一个芯片平台中选定的芯片平台的所述公共代码和变量代码进行代码编译以得到目标代码。
[0006]优选地,确定从所述至少一个芯片平台中选定的芯片平台的变量代码配置包括:根据所述至少一个变量代码创建配置表,其中该配置表包括该至少一个芯片平台中的每一个芯片平台的所述变量代码配置;以及根据从所述至少一个芯片平台中选定的芯片平台从所述配置表中确定该芯片平台的所述变量代码配置。
[0007]优选地,根据所述至少一个变量代码创建配置表包括:根据所述至少一个变量代码生成对应的所述变量代码配置,并存储所述变量代码配置以形成所述配置表。
[0008]优选地,根据从所述至少一个芯片平台中选定的芯片平台的所述公共代码和变量代码进行代码编译以得到目标代码包括:对所述公共代码和所述变量代码进行处理以形成中间代码;以及将所述中间代码进行变换以形成所述目标代码。
[0009]优选地,根据从所述至少一个芯片平台中选定的芯片平台的所述公共代码和变量代码进行代码编译以得到目标代码还包括:对所述中间代码进行代码优化。
[0010]本发明还提供一种代码编译装置,该代码编译装置包括:代码获取模块、变量代码处理模块以及编译模块,其中,所述代码获取模块用于确定至少一个芯片平台的公共代码以及至少一个变量代码;所述变量代码处理模块用于确定从所述至少一个芯片平台中选定的芯片平台的变量代码配置以及加载所述变量代码配置至编译模块;以及所述编译模块用于根据从所述至少一个芯片平台中选定的芯片平台的所述公共代码和变量代码进行代码编译以得到目标代码。
[0011]优选地,所述变量代码处理模块用于:根据所述至少一个变量代码创建配置表,其中该配置表包括该至少一个芯片平台中的每一个芯片平台的所述变量代码配置;以及根据从所述至少一个芯片平台中选定的芯片平台从所述配置表中确定该芯片平台的所述变量代码配置。
[0012]优选地,所述变量代码处理模块还用于:根据所述至少一个变量代码生成对应的所述变量代码配置,并存储所述变量代码配置以形成所述配置表。
[0013]优选地,所述编译模块用于:对所述公共代码和所述变量代码进行处理以形成中间代码;以及将所述中间代码进行变换以形成所述目标代码。
[0014]优选地,所述编译模块还用于:对所述中间代码进行代码优化。
[0015]通过上述技术方案,采用本发明提供的代码编译方法和代码编译装置,首先确定至少一个芯片平台的公共代码和至少一个变量代码;然后根据至少一个变量代码创建配置表,其中该配置表包括该至少一个芯片平台中的每一个芯片平台的变量代码配置;根据从所述至少一个芯片平台中选定的芯片平台从该配置表中确定该芯片平台的变量代码配置;接着加载变量代码配置至编译模块;最后根据从至少一个芯片平台中选定的芯片平台的公共代码和变量代码进行代码编译。本发明提供的代码编译方法和代码编译装置不用重复配置代码工具,可以实现快速代码编译。
[0016]本发明的其它特征和优点将在随后的【具体实施方式】部分予以详细说明。
【附图说明】
[0017]附图是用来提供对本发明的进一步理解,并且构成说明书的一部分,与下面的【具体实施方式】一起用于解释本发明,但并不构成对本发明的限制。在附图中:
[0018]图1是本发明提供的代码编译方法的流程图;
[0019]图2是本发明一实施方式提供的代码编译方法的流程图;以及
[0020]图3是本发明提供的代码编译装置的结构示意图。
[0021]附图标记说明
[0022]I代码获取模块2变量代码处理模块
[0023]3编译模块。
【具体实施方式】
[0024]以下结合附图对本发明的【具体实施方式】进行详细说明。应当理解的是,此处所描述的【具体实施方式】仅用于说明和解释本发明,并不用于限制本发明。
[0025]图1是本发明提供的代码编译方法的流程图。如图1所示,本发明提供一种代码编译方法,该代码编译方法包括:确定至少一个芯片平台的公共代码和至少一个变量代码;确定从所述至少一个芯片平台中选定的芯片平台的变量代码配置;加载所述变量代码配置至编译模块;以及所述编译模块根据从所述至少一个芯片平台中选定的芯片平台的所述公共代码和变量代码进行代码编译以得到目标代码。
[0026]本发明可以根据一个或多个芯片平台使用(为了便于说明清楚,下文均以多个芯片平台为例),多个芯片平台具有相同的公共代码和各自独有的变量代码,如果芯片平台不同,对该芯片平台进行编译的编译工具也不相同,具体为编译工具中的代码配置不同,在使用编译工具时,需要根据不同的芯片平台重新配置编译工具,造成了极大的不便。本发明在编译之前,确定出每一个芯片平台的变量代码,以便得到变量代码配置,并将需要编译的芯片平台的变量代码配置加载至编译工具中(本发明为编译模块),然后再进行编译。这样可以实现对多个芯片平台的自动编译而不需要对编译工具进行更换和重装。
[0027]图2是本发明一实施方式提供的代码编译方法的流程图。如图2所示,上文提到的确定从所述至少一个芯片平台中选定的芯片平台的变量代码配置包括:根据所述至少一个变量代码创建配置表,其中该配置表包括该至少一个芯片平台中的每一个芯片平台的所述变量代码配置;以及根据从所述至少一个芯片平台中选定的芯片平台从所述配置表中确定该芯片平台的所述变量代码配置。
[0028]在此实施方式中,本发明设置一个配置表,该配置表用来存储每一个芯片平台的变量代码配置,在需要某一个芯片平台的变量代码配置时,可以直接从该配置表中调出该芯片平台的变量代码配置。每一个芯片平台都对应独有的变量代码配置,该变量代码配置可以根据变量代码生成。在此要说明的是,该实施方式仅为示例性,例如将配置表换为其它设置也可以实现本发明的目的,在此不再赘述。
[0029]上文所述的根据从所述至少一个芯片平台中选定的芯片平台的所述公共代码和变量代码进行代码编译以得到目标代码包括:对所述公共代码和所述变量代码进行处理以形成中间代码;对所述中间代码进行代码优化;以及将所述中间代码进行变换以形成所述目标代码。
[0030]本发明提到的编译(compile),是把高级语言变成计算机可以识别的二进制语言的过程。计算机只认识I和0,编译程序把人们熟悉的语言换成2进制。编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:1)词法分析;2)语法分析;3)语义检查和中间代码生成;4)代码优化;5)目标代码生成。主要是进行词法分析和语法分析,又称为源程序分析,分析过程中发现有语法错误,可以给出提示信息。
[0031 ]下面将简单说明以上五个阶段:
[0032]编译程序(compiler),是将某一种程序设计语言写的程序翻译成等价的另一种语s的程序。
[0033]I)词法分析的任务是对由字符组成的单词进行处理,从左至右逐个字符地对源程序进行扫描,产生一个个的单词符号,把作为字符串的源程序改造成为单词符号串的中间程序。执行词法分析的程序称为词法分析程序或扫描器。
[0034]2)编译程序的语法分析以单词符号作为输入,分析单词符号串是否形成符合语法规则的语法单位,如表达式、赋值、循环等,最后看是否构成一个符合要求的程序,按该语言使用的语法规则分析检查每条语句是否有正确的逻辑结构,程序是最终的一个语法单位。编译程序的语法规则可用上下文无关文法来刻画。
[0035]语法分析的方法分为两种:自上而下分析法和自下而上分析法。自上而下就是从文法的开始符号出发,向下推导,推出句子。而自下而上分析法采用的是移进归约法,基本思想是:用一个寄存符号的先进后出栈,把输入符号一个一个地移进栈里,当栈顶形成某个产生式的一个候选式时,即把栈顶的这一部分归约成该产生式的左邻符号。
[0036]3)中间代码是源程序的一种内部表示,或称中间语言。中间代码的作用是可使编译程序的结构在逻辑上更为简单明确,特别是可使目标代码的优化比较容易实现中间代码,即为中间语言程序,中间语言的复杂性介于源程序语言和机器语言之间。中间语言有多种形式,常见的有逆波兰记号、四元式、三元式和树。
[0037]4)代码优化是指对程序进行多种等价变换,使得从变换后的程序出发,能生成更有效的目标代码。等价是指不改变程序的运行结果。有效主要指目标代码运行时间较短,以及占用的存储空间较小。这种变换称为优化。
[0038]代码优化分为两类:一类是对语法分析后的中间代码进行优化;另一类是在生成目标代码时进行的。对于前一类优化,根据它所涉及的程序范围可分为局部优化、循环优化和全局优化三个不同的级别。
[0039]5)目标代码生成是编译的最后一个阶段。把语法分析后或优化后的中间代码变换成目标代码。
[0040]另外,如果编译过程中发现源程序有错误,编译程序可以报告错误的性质和错误的发生的地点,并且将错误所造成的影响限制在尽可能小的范围内,使得源程序的其余部分能继续被编译下去,这些工作由错误处理程序完成。
[0041 ]该实施方式提供的代码编译方法总体如下:
[0042]确定出多个芯片平台相同的公共代码以及各自不同的变量代码,可以将这些代码存储。然后根据多个变量代码生成对应的多个变量代码配置,创建配置表,将多个变量代码配置与多个芯片平台分别对应存储;在对某一个芯片平台编译时,从配置表中确定该芯片平台对应的变量代码配置,并将该变量代码配置加载给编译模块。最后,对该芯片平台的公共代码和变量代码进行处理以生成中间代码,对中间代码进行代码优化,并将中间代码进行变换从而形成目标代码。
[0043]图3是本发明提供的代码编译装置的结构示意图。如图3所示,本发明还提供一种代码编译装置,该代码编译装置包括:代码获取模块1、变量代码处理模块2以及编译模块3,其中,所述代码获取模块I用于确定至少一个芯片平台的公共代码以及至少一个变量代码;所述变量代码处理模块2用于确定从所述至少一个芯片平台中选定的芯片平台的变量代码配置以及加载所述变量代码配置至编译模块3;以及所述编译模块3用于根据从所述至少一个芯片平台中选定的芯片平台的所述公共代码和变量代码进行代码编译以得到目标代码。
[0044]变量代码处理模块2具体用于:根据所述至少一个变量代码创建配置表,其中该配置表包括该至少一个芯片平台中的每一个芯片平台的所述变量代码配置;根据所述至少一个变量代码生成对应的所述变量代码配置,并存储所述变量代码配置以形成所述配置表;以及根据从所述至少一个芯片平台中选定的芯片平台从所述配置表中确定该芯片平台的所述变量代码配置。
[0045]所述编译模块3具体用于:对所述公共代码和所述变量代码进行处理以形成中间代码;对所述中间代码进行代码优化;以及将所述中间代码进行变换以形成所述目标代码。
[0046]首先由代码获取模块I确定出多个芯片平台相同的公共代码以及各自不同的变量代码,可以将这些代码存储于代码存储器中。然后变量代码处理模块2根据多个变量代码生成对应的多个变量代码配置,创建配置表,将多个变量代码配置与多个芯片平台分别对应存储;在对某一个芯片平台编译时,变量代码处理模块2从配置表中确定该芯片平台对应的变量代码配置,并将该变量代码配置加载给编译模块3。最后,编译模块3对该芯片平台的公共代码和变量代码进行处理以生成中间代码,对中间代码进行代码优化,并将中间代码进行变换从而形成目标代码。
[0047]通过上述技术方案,采用本发明提供的代码编译方法和代码编译装置,首先确定至少一个芯片平台的公共代码和至少一个变量代码;然后根据至少一个变量代码创建配置表,其中该配置表包括该至少一个芯片平台中的每一个芯片平台的变量代码配置;根据从所述至少一个芯片平台中选定的芯片平台从该配置表中确定该芯片平台的变量代码配置;接着加载变量代码配置至编译模块;最后根据从至少一个芯片平台中选定的芯片平台的公共代码和变量代码进行代码编译。本发明提供的代码编译方法和代码编译装置不用重复配置代码工具,可以实现快速代码编译。
[0048]以上结合附图详细描述了本发明的优选实施方式,但是,本发明并不限于上述实施方式中的具体细节,在本发明的技术构思范围内,可以对本发明的技术方案进行多种简单变型,这些简单变型均属于本发明的保护范围。
[0049]另外需要说明的是,在上述【具体实施方式】中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本发明对各种可能的组合方式不再另行说明。
[0050]此外,本发明的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明的思想,其同样应当视为本发明所公开的内容。
【主权项】
1.一种代码编译方法,其特征在于,该代码编译方法包括: 确定至少一个芯片平台的公共代码和至少一个变量代码; 确定从所述至少一个芯片平台中选定的芯片平台的变量代码配置; 加载所述变量代码配置至编译模块;以及 所述编译模块根据从所述至少一个芯片平台中选定的芯片平台的所述公共代码和变量代码进行代码编译以得到目标代码。2.根据权利要求1所述的代码编译方法,其特征在于,确定从所述至少一个芯片平台中选定的芯片平台的变量代码配置包括: 根据所述至少一个变量代码创建配置表,其中该配置表包括该至少一个芯片平台中的每一个芯片平台的所述变量代码配置;以及 根据从所述至少一个芯片平台中选定的芯片平台从所述配置表中确定该芯片平台的所述变量代码配置。3.根据权利要求2所述的代码编译方法,其特征在于,根据所述至少一个变量代码创建配置表包括: 根据所述至少一个变量代码生成对应的所述变量代码配置,并存储所述变量代码配置以形成所述配置表。4.根据权利要求1所述的代码编译方法,其特征在于,根据从所述至少一个芯片平台中选定的芯片平台的所述公共代码和变量代码进行代码编译以得到目标代码包括: 对所述公共代码和所述变量代码进行处理以形成中间代码;以及 将所述中间代码进行变换以形成所述目标代码。5.根据权利要求4所述的代码编译方法,其特征在于,根据从所述至少一个芯片平台中选定的芯片平台的所述公共代码和变量代码进行代码编译以得到目标代码还包括: 对所述中间代码进行代码优化。6.一种代码编译装置,其特征在于,该代码编译装置包括: 代码获取模块(I)、变量代码处理模块(2)以及编译模块(3),其中,所述代码获取模块(I)用于确定至少一个芯片平台的公共代码以及至少一个变量代码; 所述变量代码处理模块(2)用于确定从所述至少一个芯片平台中选定的芯片平台的变量代码配置以及加载所述变量代码配置至编译模块(3);以及 所述编译模块(3)用于根据从所述至少一个芯片平台中选定的芯片平台的所述公共代码和变量代码进行代码编译以得到目标代码。7.根据权利要求6所述的代码编译装置,其特征在于,所述变量代码处理模块(2)用于: 根据所述至少一个变量代码创建配置表,其中该配置表包括该至少一个芯片平台中的每一个芯片平台的所述变量代码配置;以及 根据从所述至少一个芯片平台中选定的芯片平台从所述配置表中确定该芯片平台的所述变量代码配置。8.根据权利要求7所述的代码编译装置,其特征在于,所述变量代码处理模块(2)还用于: 根据所述至少一个变量代码生成对应的所述变量代码配置,并存储所述变量代码配置以形成所述配置表。9.根据权利要求6所述的代码编译方法,其特征在于,所述编译模块(3)用于:对所述公共代码和所述变量代码进行处理以形成中间代码;以及将所述中间代码进行变换以形成所述目标代码。10.根据权利要求9所述的代码编译方法,其特征在于,所述编译模块(3)还用于:对所述中间代码进行代码优化。
【文档编号】G06F9/45GK105867992SQ201610182874
【公开日】2016年8月17日
【申请日】2016年3月28日
【发明人】石奉兵, 罗汉彬
【申请人】乐视控股(北京)有限公司, 乐视致新电子科技(天津)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1