移植方法及源到源编译器技术

技术编号:9765643 阅读:233 留言:0更新日期:2014-03-15 09:43
本发明专利技术实施例公开了移植方法及源到源编译器,以解决现有技术应用程序不能跨平台移植的问题。该方法包括:接收与平台芯片架构无关、针对应用程序编写的、采用通用运算符和通用数据类型的通用平台算法源代码;对通用平台算法源代码中的通用运算符及通用数据类型进行转换,得到符合目标平台要求的目标平台算法源代码;发送目标平台算法源代码至目标平台编译器。在本实施例中,将通用平台算法源代码作为中间代码,通过对其通用运算符及通用数据类型进行转换,可得到符合目标平台要求的目标平台算法源代码,而对通用运算符及通用数据类型的转换是对基本运算的转换,因此可实现跨平台源到源转换,解决了现有技术无法实现跨平台源到源转换的问题。

【技术实现步骤摘要】
移植方法及源到源编译器
本专利技术涉及计算机
,更具体地说,涉及移植方法及源到源编译器。
技术介绍
在DSP(Digital Signal Processing)平台、CPU、GPU(Graphic Processing Unit)升级换代(将DSP平台、CPU、GPU统称为平台)时,原平台中的应用程序经常需要进行对应的移植,以令其可在升级换代后的平台(可称为目标平台)上应用。原平台与目标平台可能为不同平台,也即程序移植存在跨平台移植的需求。所谓的不同平台,是指芯片架构(比如指令,数据类型定义等)有差异的平台。上述应用程序是程序源代码经过编译后得到的二进制可执行文件(exe文件)。为追求性能最优,应用程序中的算法程序源代码往往与平台芯片架构强相关,因此,应用程序的移植的核心是将适用于原平台的算法源代码转换成适用于目标平台的算法源代码,也即进行源到源转换。现有的源到源编辑器,可实现单线程代码到多线程代码的转换,以及不同语言源代码间的转换。但现有的源到源编辑器所进行的源到源转换,是业务逻辑上的转换,并不涉及平台相关的基本运算的转换,因此,其只适应于同平台的转换,不能跨平本文档来自技高网...
移植方法及源到源编译器

【技术保护点】
一种应用程序跨平台移植方法,其特征在于,包括:接收与平台芯片架构无关、针对所述应用程序编写的、采用通用运算符和通用数据类型的通用平台算法源代码;对所述通用平台算法源代码中的通用运算符及通用数据类型进行转换,得到符合目标平台运算要求及数据类型要求的目标平台算法源代码;发送所述目标平台算法源代码至目标平台编译器,以便所述目标平台编译器对所述目标平台算法源代码进行编译,得到可运行在目标平台上的应用程序。

【技术特征摘要】
1.一种应用程序跨平台移植方法,其特征在于,包括: 接收与平台芯片架构无关、针对所述应用程序编写的、采用通用运算符和通用数据类型的通用平台算法源代码; 对所述通用平台算法源代码中的通用运算符及通用数据类型进行转换,得到符合目标平台运算要求及数据类型要求的目标平台算法源代码; 发送所述目标平台算法源代码至目标平台编译器,以便所述目标平台编译器对所述目标平台算法源代码进行编译,得到可运行在目标平台上的应用程序。2.如权利要求1所述的方法,其特征在于,所述对通用平台算法源代码中的通用运算符及通用数据类型进行转换,得到符合目标平台运算要求及数据类型要求的目标平台算法源代码,具体包括: 解析所述通用平台算法源代码,得到抽象语法树;其中,所述抽象语法树包括通用运算节点; 对所述抽象语法树中的通用运算节点进行替换处理和优化处理,得到符合目标平台运算要求及数据类型要求的语法树; 反解析所述符合目标平台运算要求及数据类型要求的语法树,得到所述目标平台算法源代码。3.根据权利要求2所述的方法,其特征在于,所述解析所述通用平台算法源代码,得到抽象语法树包括: 对所述通用平台算法源代码进行词法分析,得到记号流;` 对所述记号流进行语法分析,构成第一语法树; 对所述第一语法树进行语义分析,得到经语义分析处理后的抽象语法树。4.如权利要求2或3所述的方法,其特征在于, 所述替换处理包括: 令所述抽象语法树中的每一通用运算节点和通用运算库模板进行匹配,当满足预设匹配条件时,匹配成功; 利用匹配成功的通用运算库模板中的内容,替换与之相匹配的通用运算节点的内容,得到第二语法树; 所述优化处理包括:对所述第二语法树进行合并相同循环的节点、消除冗余节点和向量化中的至少一种,得到所述符合目标平台运算要求及数据类型要求的语法树。5.根据权利要求2-4任一项所述的方法,其特征在于, 所述通用运算节点包括通用运算符节点和操作数节点; 所述通用运算库模板包括通用运算模板和通用数据类型模板; 所述通用运算模板的内容包含,适用于所述目标平台并可实现通用运算的运算代码;所述通用数据类型模板的内容包含,适用于所述目标平台、并与通用数据类型相对应的数据类型的定义或解释。6.如权利要求5所述的方法,其特征在于, 当令通用运算符节点与通用运算模板进行匹配时,所述预设匹配条件包括,通用运算符节点包含的通用运算符,与通用运算模板所实现的通用运算相一致,并且,通用运算符节点的关联节点之间符合依赖关系;当令操作数节点与通用数据类型模板进行匹配时,所述预设匹配条件包括,操作数节点包含的通用数据类型,与通用数据类型模板对应的通用数据类型相一致,并且,操作数节点的关联节点之间符合依赖关系; 所述关联节点包括左节点和右节点中的至少一种。7.如权利要求5所述的方法,其特征在于,所述通用运算库模板还包括专有指令模板,所述专有指令模板的内容包含,适用于所述目标平台并可实现通用运算的指令; 当令通用运算符节点与专有指令模板进行匹配时,所述预设匹配条件包括,通用运算符节点包含的通用运算符,与专有指令模板所实现的通用运算相一致,并且,通用运算符节点的关联节点之间符合依赖关系; 所述关联节点包括左节点和右节点中的至少一种。8.如权利要求1-7任一项所述的方法,其特征在于,所述接收到的算法源代码具体为通用DSP算法C源代码。9.一种源到源编译器,其特征在于,包括:...

【专利技术属性】
技术研发人员:曾建江卓玉樟胡海亮
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

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

1