一种动态语言与汇编混合编译方法技术

技术编号:33707016 阅读:16 留言:0更新日期:2022-06-06 08:31
本发明专利技术涉及一种动态语言与汇编混合编译方法,属于网络处理器领域。本发明专利技术启动第三方动态语言引擎,加载动态汇编扩展库,动态汇编扩展库包括汇编编译引擎以及用户自定义的汇编模块的接口函数,加载汇编公共函数库,导入用户编写的程序代码,第三方动态语言引擎解析程序代码,编译用户编写的第三方动态语言程序,如果遇到汇编公共函数库中的函数和用户自定义的汇编模块的接口函数,由汇编编译引擎编译这些函数并输出对应的机器码保存到程序内部记录空间,第三方动态语言引擎调用记录下来的机器码,产生二进制输出文件。本发明专利技术实现了动态汇编编程方式,在动态语言中嵌入汇编指令,编程效率达到动态语言的编程效率,同时也兼顾汇编程序性能。兼顾汇编程序性能。兼顾汇编程序性能。

【技术实现步骤摘要】
一种动态语言与汇编混合编译方法


[0001]本专利技术属于计算机网络、网络处理器领域,具体涉及一种动态语言与汇编混合编译方法。

技术介绍

[0002]在通用处理器和专用处理器中为了提升编程性能往往需要采用汇编方式进行编程,对于网络处理器、GPU等专用处理器中使用了大量的专用指令,基本无法使用高级语言(如C语言等)进行编程,都是用自定义的指令汇编进行编程。
[0003]在编写汇编指令时,由于更接近内部硬件行为,无法像高级语言进行更高抽象行为编程,导致编写代码效率很低,且入门困难。当前的汇编语言编译器宏替换等方式能实现相对很弱的功能抽象编程。

技术实现思路

[0004](一)要解决的技术问题
[0005]本专利技术要解决的技术问题是如何提供一种动态语言与汇编混合编译方法,以解决在编写汇编指令时编写代码效率很低,且入门困难的问题。
[0006](二)技术方案
[0007]为了解决上述技术问题,本专利技术提出一种动态语言与汇编混合编译方法,该方法包括如下步骤:
[0008]S1、启动第三方动态语言引擎;
[0009]S2、加载动态汇编扩展库,动态汇编扩展库包括汇编编译引擎以及用户自定义的汇编模块的接口函数;
[0010]S3、加载汇编公共函数库;
[0011]S4、导入用户编写的程序代码,第三方动态语言引擎解析程序代码,如果发现错误则输出错误日志,用户修改错误后,重新加载解析,指导所有语法正确;
[0012]S5、第三方动态语言引擎动态编译用户编写的第三方动态语言程序,如果遇到汇编公共函数库中的函数和用户自定义的汇编模块的接口函数,由汇编编译引擎编译这些函数并输出对应的机器码保存到程序内部记录空间,供S7使用;
[0013]S6、判断程序编译是否结束,如果没有结束则返回S5继续编译程序;如果结束则转到S7;
[0014]S7、程序编译完毕,第三方动态语言引擎调用记录下来的机器码,产生二进制输出文件。
[0015]进一步地,所述第三方动态语言包括python和perl。
[0016]进一步地,所述用户自定义的汇编模块的接口函数在汇编公共函数库的基础上进行封装,用户使用汇编指令按照不同的功能编写汇编模块。
[0017]进一步地,汇编模块是用户提取出来高频度指令组合,用于在用户编程时重复调
用。
[0018]进一步地,汇编模块提供接口函数供用户编程时调用,该汇编模块中的汇编指令由汇编编译引擎进行编译,编译时会用到汇编公共函数库。
[0019]进一步地,对于不同的工程或项目,可继承其他工程或项目的汇编模块,也可自定义该工程或项目特有功能的汇编模块。
[0020]进一步地,所述汇编公共函数库为机器汇编指令,通过第三方动态语言重新定义,供用户编程时调用。
[0021]进一步地,所述步骤S4中的程序代码为动态汇编程序,包括第三方动态语言和汇编函数。
[0022]进一步地,该方法应用于使用了大量的专用指令的专用处理器。
[0023]进一步地,专用处理器包括网络处理器和GPU。
[0024](三)有益效果
[0025]本专利技术提出一种动态语言与汇编混合编译方法,与现有技术相比,本专利技术提出的方案实现了动态汇编编程方式,在动态语言中嵌入汇编指令,编程效率达到动态语言(如python、perl语言等)的编程效率,同时也能兼顾汇编程序性能。通过此技术开发人员可以快速定义自己的一套动态语言或者在当前主流的动态语言(如python、perl语言等)进行二次开发实现编程、解释及汇编过程,能快速建立一套完整的汇编集成开发环境。
附图说明
[0026]图1为本专利技术处理过程方法框图。
具体实施方式
[0027]为使本专利技术的目的、内容和优点更加清楚,下面结合附图和实施例,对本专利技术的具体实施方式作进一步详细描述。
[0028]本专利技术的目的就是提出一种动态语言与汇编指令混合编程技术,既能兼顾汇编编程中的最优性能又能实现高级语言高效编程和易读性。
[0029]图1是本专利技术技术方案的主流程图。如图1所示,本专利技术提出的内动态汇编编程方法包括下列步骤:
[0030]S1、启动第三方动态语言引擎。
[0031]对于采用第三方动态语言,可以直接启动相应的引擎;第三方动态语言包括python、perl等。
[0032]S2、加载动态汇编扩展库,动态汇编扩展库包括汇编编译引擎以及用户自定义的汇编模块的接口函数。
[0033]所述用户自定义的汇编模块的接口函数在汇编公共函数库的基础上进行封装,用户使用汇编指令按照不同的功能编写汇编模块,这些汇编模块抽象程度较高,编程效率高,是用户根据日常业务提取出来高频度指令组合,用于在用户编程时重复调用。
[0034]该汇编模块提供接口函数供用户编程时调用,该汇编模块中的汇编指令可由汇编编译引擎进行编译,编译时会用到汇编公共函数库。
[0035]对于不同的工程或项目,可以继承其他工程或项目的汇编模块,也可以自定义该
工程或项目特有功能的汇编模块。
[0036]S3、加载汇编公共函数库;
[0037]所述汇编公共函数库为机器汇编指令,通过第三方动态语言重新定义,供用户编程时调用;
[0038]S4、导入用户编写的程序代码,该程序代码为动态汇编程序,包括第三方动态语言和汇编函数,第三方动态语言引擎解析程序代码,如果发现错误则输出错误日志,用户修改错误后,重新加载解析,指导所有语法正确。
[0039]S5、第三方动态语言引擎动态编译用户编写的第三方动态语言程序,如果遇到汇编公共函数库中的函数和用户自定义的汇编模块的接口函数,由汇编编译引擎编译这些函数并输出对应的机器码保存到程序内部记录空间,供S7使用;
[0040]S6、判断程序编译是否结束,如果没有结束则返回S5继续编译程序;如果结束则转到S7;
[0041]S7、程序编译完毕,第三方动态语言引擎调用记录下来的机器码,产生二进制输出文件。
[0042]该方法应用于网络处理器、GPU等使用了大量的专用指令的专用处理器,在动态语言中嵌入汇编指令,可以大幅编程效率,同时也能兼顾汇编程序性能。
[0043]与现有技术相比,本专利技术提出的技术方案实现了动态汇编编程方式,在动态语言中嵌入汇编指令,编程效率达到动态语言(如python、perl语言等)的编程效率,同时也能兼顾汇编程序性能。通过此技术开发人员可以快速定义自己的一套动态语言或者在当前主流的动态语言(如python、perl语言等)进行二次开发实现编程、解释及汇编过程。能快速建立一套完整的汇编集成开发环境。
[0044]以上所述仅是本专利技术的优选实施方式,应当指出,对于本
的普通技术人员来说,在不脱离本专利技术技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本专利技术的保护范围。
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种动态语言与汇编混合编译方法,其特征在于,该方法包括如下步骤:S1、启动第三方动态语言引擎;S2、加载动态汇编扩展库,动态汇编扩展库包括汇编编译引擎以及用户自定义的汇编模块的接口函数;S3、加载汇编公共函数库;S4、导入用户编写的程序代码,第三方动态语言引擎解析程序代码,如果发现错误则输出错误日志,用户修改错误后,重新加载解析,指导所有语法正确;S5、第三方动态语言引擎动态编译用户编写的第三方动态语言程序,如果遇到汇编公共函数库中的函数和用户自定义的汇编模块的接口函数,由汇编编译引擎编译这些函数并输出对应的机器码保存到程序内部记录空间,供S7使用;S6、判断程序编译是否结束,如果没有结束则返回S5继续编译程序;如果结束则转到S7;S7、程序编译完毕,第三方动态语言引擎调用记录下来的机器码,产生二进制输出文件。2.如权利要求1所述的动态语言与汇编混合编译方法,其特征在于,所述第三方动态语言包括python和perl。3.如权利要求1所述的动态语言与汇编混合编译方法,其特征在于,所述用户自定义的汇编模块的接口函数在汇编公共函数库的基础上进行封装,用户使用汇编指令...

【专利技术属性】
技术研发人员:王万财
申请(专利权)人:成都北中网芯科技有限公司
类型:发明
国别省市:

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

1