指令优化方法及装置制造方法及图纸

技术编号:28701112 阅读:13 留言:0更新日期:2021-06-05 21:05
本发明专利技术公开了一种指令优化方法,适于减少源程序的可执行文件中的代码段所占用的存储空间,该方法包括步骤:对源程序进行编译,以得到该源程序的可执行文件,可执行文件包括多个函数占用的存储区域信息;将可执行文件中包括的在源程序中未被调用的函数作为冗余函数;以及在源程序中将冗余函数定义为空函数。本发明专利技术一并公开了相应的装置。一并公开了相应的装置。一并公开了相应的装置。

【技术实现步骤摘要】
指令优化方法及装置


[0001]本专利技术涉及嵌入式开发
,尤其涉及一种指令优化方法、计算设备及片上系统。

技术介绍

[0002]随着网络通信技术的发展,当今社会已进入物联网(Internet of Things,IoT)时代。嵌入式技术是物联网得以实现的基础。开发者在PC(Personal Computer)端完成程序的开发、调试后,将程序烧写至嵌入式芯片的存储器中,并将嵌入式芯片集成于智能设备。当嵌入式芯片的处理器运行该程序时,使得智能设备能够启动工作并实现相应功能。
[0003]智能设备多种多样,嵌入式芯片的硬件资源配置会根据智能设备应用场景的不同而存在较大差异。在低成本、低功耗需求的应用场景(例如工业应用场景)中,通常会对嵌入式芯片的运行内存的容量进行压缩。因此,烧写至存储器中的程序指令需要有较高的集成度,尽可能减少冗余,以节省运行时所占用的内存空间。

技术实现思路

[0004]为此,本专利技术提供一种指令优化方法及装置,以力图解决或至少缓解上面存在的问题。
[0005]根据本专利技术的第一个方面,提供一种指令优化方法,适于减少源程序的可执行文件中的代码段所占用的存储空间,该方法包括步骤:对源程序进行编译,以得到该源程序的可执行文件,可执行文件包括多个函数占用的存储区域信息;将可执行文件中包括的在源程序中未被调用的函数作为冗余函数;以及在源程序中将冗余函数定义为空函数。
[0006]可选地,在根据本专利技术的指令优化方法中,存储空间为用于物联网设备的片上系统的只读存储空间。
[0007]可选地,在根据本专利技术的指令优化方法中,源程序包括至少一个用于程序调试的调试函数,在对源程序进行编译的步骤之前,还包括步骤:通过在源程序中定义调试常量来区分源程序的编译模式,编译模式包括调试模式和发行模式;在发行模式下,定义调试函数为空,以删除调试函数。
[0008]可选地,在根据本专利技术的指令优化方法中,对源程序进行编译的步骤包括:在发行模式下对源程序进行编译。
[0009]可选地,在根据本专利技术的指令优化方法中,在源程序中将冗余函数定义为空函数的步骤包括:确定冗余函数的定义格式,定义格式包括返回值类型、函数名、参数类型;按照定义格式,将冗余函数定义为空函数。
[0010]可选地,在根据本专利技术的指令优化方法中,采用编译器对源程序进行编译,冗余函数为编译器引入的标准库函数。
[0011]可选地,在根据本专利技术的指令优化方法中,冗余函数为编译器引入的文件输入输出类函数。
[0012]可选地,在根据本专利技术的指令优化方法中,在源程序中将冗余函数定义为空函数的步骤包括:确定文件输入输出类中的根函数,文件输入输出类中的其他函数均为根函数的子函数;将根函数定义为空函数。
[0013]可选地,在根据本专利技术的指令优化方法中,将根函数定义为空函数的步骤包括:确定根函数的定义格式;按照定义格式,将根函数定义为空函数。
[0014]可选地,在根据本专利技术的指令优化方法中,还包括步骤:当可执行文件中包括两个功能相同但参数精度不同的函数时,将两个函数的参数调整为同一精度。
[0015]可选地,在根据本专利技术的指令优化方法中,在在源程序中将冗余函数定义为空函数的步骤之后,还包括步骤:再次对源程序进行编译,以得到源程序的可执行文件。
[0016]根据本专利技术的第二个方面,提供一种计算设备,包括:至少一个处理器;以及存储有程序指令的存储器,当该程序指令被处理器读取并执行时,使得该计算设备执行上述指令优化方法。
[0017]根据本专利技术的第三个方面,提供一种存储有程序指令的可读存储介质,当该程序指令被计算设备读取并执行时,使得计算设备执行上述指令优化方法。
[0018]根据本专利技术的第四个方面,提供一种片上系统,包括:至少一个处理器;以及只读存储器,只读存储器中存储有按照上述指令优化方法优化后的源程序的可执行文件。
[0019]根据本专利技术的第五个方面,提供一种智能设备,包括上述片上系统。
[0020]根据本专利技术的技术方案,对源程序进行编译以得到源程序的可执行文件,通过对比可执行文件中的函数与源程序中的函数,将可执行文件中包括的,但在源程序中未被调用的函数作为冗余函数,并在源程序中将冗余函数定义为空函数。冗余函数通常为编译器在编译源程序时自行引入的库函数,通过将冗余函数定义为空函数,编译器将优先调用自定义的空函数,而不会再去调用标准库中的同名函数,从而减少了可执行文件中的代码段所占用的存储空间。
[0021]进一步地,当冗余函数为编译器引入的文件输入输出类函数时,通过确定文件输入输出类中的根函数,并将根函数定义为空函数,可以便捷地避免引入文件输入输出类中的所有函数。
[0022]此外,本专利技术的技术方案还实现了源程序的条件编译。在调试(Debug)模式下,对源程序中的调试函数正常编译,得到调试版本的可执行文件,调试版本的可执行文件中包括调试函数的代码段。而在发行模式(Release)下,定义调试函数为空,以删除调试函数,使发行版本的可执行文件中不包括调试函数的代码段,从而减少了可执行文件中的代码段所占用的存储空间。
[0023]上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。
附图说明
[0024]为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述
以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
[0025]图1示出了根据本专利技术一个实施例的片上系统100的示意图;
[0026]图2示出了根据本专利技术一个实施例的计算设备200的示意图;
[0027]图3示出了根据本专利技术一个实施例的烧写系统300的示意图;
[0028]图4示出了根据本专利技术一个实施例的指令优化方法400的流程图;
[0029]图5示出了根据本专利技术一个实施例的编译生成的可执行文件的代码段的示意图;
[0030]图6示出了根据本专利技术另一个实施例的编译生成的可执行文件的代码段的示意图;
[0031]图7示出了根据本专利技术另一个实施例的指令优化方法700的流程图;
[0032]图8示出了根据本专利技术一个实施例的两个功能相同但参数精度不同的函数的示意图。
具体实施方式
[0033]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种指令优化方法,适于减少源程序的可执行文件中的代码段所占用的存储空间,所述方法包括步骤:对源程序进行编译,以得到所述源程序的可执行文件,所述可执行文件包括多个函数占用的存储区域信息;将所述可执行文件中包括的在所述源程序中未被调用的函数作为冗余函数;以及在所述源程序中将所述冗余函数定义为空函数。2.如权利要求1所述的方法,其中,所述存储空间为用于物联网设备的片上系统的只读存储空间。3.如权利要求1所述的方法,其中,所述源程序包括至少一个用于程序调试的调试函数,在所述对源程序进行编译的步骤之前,还包括步骤:通过在源程序中定义调试常量来区分所述源程序的编译模式,所述编译模式包括调试模式和发行模式;在发行模式下,定义所述调试函数为空,以删除所述调试函数。4.如权利要求3所述的方法,其中,所述对源程序进行编译的步骤包括:在发行模式下对源程序进行编译。5.如权利要求1-4中任一项所述的方法,其中,所述在所述源程序中将所述冗余函数定义为空函数的步骤包括:确定所述冗余函数的定义格式,所述定义格式包括返回值类型、函数名、参数类型;按照所述定义格式,将所述冗余函数定义为空函数。6.如权利要求1-4中任一项所述的方法,其中,采用编译器对源程序进行编译,所述冗余函数为编译器引入的标准库函数。7.如权利要求6所述的方法,其中,所述冗余函数为编译器引入的文件输入输出类函数。8.如权利要求7...

【专利技术属性】
技术研发人员:尹玉李玉东
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:

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

1