System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及计算机,尤其涉及一种代码优化方法及装置。
技术介绍
1、传统的软件开发过程通常包括:设计软件的功能算法,针对该算法使用目标语言编写代码,将编码的代码烧写到设备上进行测试,根据测试更新该算法和代码,并重新烧写进行测试。上述软件开发是个漫长的过程,需要耗费极大的人力。为了能在短时间内完成软件开发,自动代码生成技术应运而生,尤其是基于模型开发(model based design,mbd)的自动代码生成方法成为主导,mbd采用的模块化建模能够实现自动化的代码生成,极大的减少了手工编码以及测试阶段的人力和时间。
2、目前,如图1所示,基于mbd的自动代码生成方法包括以下步骤:搭建原始模型,并通过模型测试器优化软件模型,得到优化后模型;通过模型预处理该优化后模型,得到模型数据;使用代码模板和配置模板将该模型数据翻译为原始代码;通过代码优化器优化原始代码,得到目标代码。该方法虽然能够在短时间内实现代码的自动生成,但是由于软件模型的运行和目标代码的执行逻辑存在一定的差异,从而基于该软件模型的模型数据得到的目标代码的性能和安全性较差。
技术实现思路
1、本申请提供一种代码优化方法及装置,解决了现有技术中基于该软件模型得到的目标代码的性能和安全性较差的问题。
2、为达到上述目的,本申请采用如下技术方案:
3、第一方面,提供一种代码优化方法,该方法包括:获取软件模型,该软件模型可以为嵌入式软件的模型,该软件模型包括多个运算组件,该多个运算组件之间按照一定的
4、上述技术方案中,获取包括多个运算组件的软件模型,根据该软件模型确定中间表示,该中间表示包括多个运算组件对应的多个组件信息和多个代码段描述信息,该多个组件信息可以称为模型信息,该多个代码段描述信息可以称为代码信息,从而该中间表示可以同时包括该模型信息和该代码信息,这样在根据该中间表示生成目标代码时,能够同时考虑该软件模型和相应的代码执行逻辑,从而保证了生成的目标代码具有较好的性能和安全性。
5、在第一方面的一种可能的实现方式中,该方法还包括:对该中间表示中的该多个代码段描述信息进行优化。上述可能的实现方式中,对该中间表示进行优化,该优化与目标代码无关(或者称为即该优化不受目标语言的限制),这样利用优化后的中间表示可生成不同目标语言对应的目的代码,从而能够在进一步提高目标代码的性能和安全性的同时,提高该中间表示的复用性。
6、在第一方面的一种可能的实现方式中,该对该中间表示中的该多个代码段描述信息进行优化,包括:根据该多个组件信息和该多个代码段描述信息,确定该软件模型的数据流信息和/或控制流信息,该数据流信息可用于指示由该软件模型的输入数据到该软件模型对应的输出数据的运算逻辑,该控制流信息可用于指示该软件模型对应的代码的执行逻辑;根据该数据流信息和/或该控制流信息,对该中间表示中的该多个代码段描述信息进行性能优化。上述可能的实现方式中,根据该数据流信息和/或该控制流信息,对该中间表示中的该多个代码段描述信息进行性能优化,可以在不改变执行结果的前提下,提升目标代码的执行速度、降低目标代码的占用存储空间,从而进一步提高目的代码的性能。
7、在第一方面的一种可能的实现方式中,该性能优化包括优化以下至少一项:该多个代码段描述信息中的局部变量,该多个代码段描述信息的组合方式,该多个代码段描述信息对应的运算指令。上述可能的实现方式中,提供了几种简单有效的对中间表示进行性能优化的方式,以提升目标代码的执行速度,降低目标代码的占用存储空间。
8、在第一方面的一种可能的实现方式中,该对该中间表示中的该多个代码段描述信息进行优化,包括:通过第一预设算法对该多个代码段描述信息进行性能优化,第一预设算法包括以下至少一项:变量折叠算法、模式分析算法、分支控制算法、指令替换算法。上述可能的实现方式中,提供了几种简单有效的对中间表示进行性能优化的算法,该算法能够提升目标代码的执行速度,降低目标代码的占用存储空间。
9、在第一方面的一种可能的实现方式中,该对该中间表示中的该多个代码段描述信息进行优化,还包括:对该中间表示中的该多个代码段描述信息进行安全优化,该安全优化包括以下至少一项:静态缺陷优化、动态缺陷优化。上述可能的实现方式中,通过对该中间表示中的多个代码段描述信息进行安全优化,可以减小生成的目标代码中的缺陷或漏洞,从而进一步提高目的代码的安全性。
10、在第一方面的一种可能的实现方式中,该对该中间表示中的该多个代码段描述信息进行安全优化,包括:通过第二预设算法对该多个代码段描述信息进行安全优化,第二预设算法包括:程序插桩算法。上述可能的实现方式中,通过程序插桩算法对该中间表示中的多个代码段描述信息进行安全优化,可以减小生成的目标代码中的缺陷或漏洞,从而进一步提高目的代码的安全性。
11、在第一方面的一种可能的实现方式中,该方法还包括:根据该中间表示和配置信息,使用目标语言生成目标代码,该配置信息包括以下至少一项:代码规范信息、代码策略信息、代码命名规则。上述可能的实现方式中,在根据该中间表示生成目标代码时,还可以通过配置信息在不同的应用场景下配置相应的约束条件,以使生成目标代码满足不同的应用场景的需求,进而提高生成目标代码的灵活性和多样性。
12、第二方面,提供一种代码优化装置,该装置包括:获取单元,用于获取软件模型,该软件模型包括多个运算组件;确定单元,用于根据该软件模型确定中间表示,该中间表示包括多个组件信息和多个代码段描述信息,该多个组件信息为该多个运算组件的信息,该多个代码段描述信息分别用于描述该多个运算组件对应的代码段,该中间表示用于生成目标代码;其中,该组件信息用于指示以下至少一项:组件标识、组件运算标识、输入数据信息、输出数据信息、组件连接关系。
13、在第二方面的一种可能的实现方式中,该装置还包括:优化单元,用于对该中间表示中的该多个代码段描述信息进行优化。
14、在第二方面的一种可能的实现方式中,该优化单元还用于:根据该多个组件信息和该多个代码段描述信息,确定该软件模型的数据流信息和/或控制流信息;根据该数据流信息和/或该控制流信息,对该中间表示中的该多个代码段描述信息进行性能优化。
15、在第二方面的一种可能的实现方式中,该性能优化包括优化以下至少一项:该多个代码段描述信息中的局部变量,该多个代码段描述信息的组合方式,该多个代码段描述信息对应的运算指令。
16、在第二方面的一种可能的实现方式中,该优化单元还用于:通过第一预设算本文档来自技高网...
【技术保护点】
1.一种代码优化方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
3.根据权利要求2所述的方法,其特征在于,所述对所述中间表示中的所述多个代码段描述信息进行优化,包括:
4.根据权利要求3所述的方法,其特征在于,所述性能优化包括优化以下至少一项:所述多个代码段描述信息中的局部变量,所述多个代码段描述信息的组合方式,所述多个代码段描述信息对应的运算指令。
5.根据权利要求2-4任一项所述的方法,其特征在于,所述对所述中间表示中的所述多个代码段描述信息进行优化,包括:
6.根据权利要求2-5任一项所述的方法,其特征在于,所述对所述中间表示中的所述多个代码段描述信息进行优化,还包括:
7.根据权利要求6所述的方法,其特征在于,所述对所述中间表示中的所述多个代码段描述信息进行安全优化,包括:
8.根据权利要求1-7任一项所述的方法,其特征在于,所述组件信息用于指示以下至少一项:组件标识、组件运算标识、输入数据信息、输出数据信息、组件连接关系。
9.根
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
11.根据权利要求1-10任一项所述的方法,其特征在于,所述软件模型为嵌入式软件的模型。
12.一种代码优化装置,其特征在于,所述装置包括:
13.根据权利要求12所述的装置,其特征在于,所述装置还包括:
14.根据权利要求13所述的装置,其特征在于,所述优化单元还用于:
15.根据权利要求14所述的装置,其特征在于,所述性能优化包括优化以下至少一项:所述多个代码段描述信息中的局部变量,所述多个代码段描述信息的组合方式,所述多个代码段描述信息对应的运算指令。
16.根据权利要求13-15任一项所述的装置,其特征在于,所述优化单元还用于:
17.根据权利要求13-16任一项所述的装置,其特征在于,所述优化单元还用于:
18.根据权利要求17所述的装置,其特征在于,所述优化单元还用于:
19.根据权利要求12-18任一项所述的装置,其特征在于,所述组件信息用于指示以下至少一项:组件标识、组件运算标识、输入数据信息、输出数据信息、组件连接关系。
20.根据权利要求12-19任一项所述的装置,其特征在于,所述中间表示用于生成目标代码。
21.根据权利要求20所述的装置,其特征在于,所述装置还包括:
22.根据权利要求12-21任一项所述的装置,其特征在于,所述软件模型为嵌入式软件的模型。
23.一种代码优化装置,其特征在于,所述装置包括处理器和存储器,所述存储器中存储有指令,当所述处理器运行所述指令时,使得所述装置实现如权利要求1-11任一项所述的代码优化方法。
24.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序或指令,当所述计算机程序或指令被运行时,实现如权利要求1-11任一项所述的代码优化方法。
...【技术特征摘要】
1.一种代码优化方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
3.根据权利要求2所述的方法,其特征在于,所述对所述中间表示中的所述多个代码段描述信息进行优化,包括:
4.根据权利要求3所述的方法,其特征在于,所述性能优化包括优化以下至少一项:所述多个代码段描述信息中的局部变量,所述多个代码段描述信息的组合方式,所述多个代码段描述信息对应的运算指令。
5.根据权利要求2-4任一项所述的方法,其特征在于,所述对所述中间表示中的所述多个代码段描述信息进行优化,包括:
6.根据权利要求2-5任一项所述的方法,其特征在于,所述对所述中间表示中的所述多个代码段描述信息进行优化,还包括:
7.根据权利要求6所述的方法,其特征在于,所述对所述中间表示中的所述多个代码段描述信息进行安全优化,包括:
8.根据权利要求1-7任一项所述的方法,其特征在于,所述组件信息用于指示以下至少一项:组件标识、组件运算标识、输入数据信息、输出数据信息、组件连接关系。
9.根据权利要求1-8任一项所述的方法,其特征在于,所述中间表示用于生成目标代码。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
11.根据权利要求1-10任一项所述的方法,其特征在于,所述软件模型为嵌入式软件的模型。
12.一种代码优化装置,其特征在于,所述装置包括:
13.根据权利要求12所述的装置,其特征在于,所述装置还...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。