您好!欢迎访问leyu乐鱼全站app!
专注精密制造10载以上
专业点胶阀喷嘴,撞针,精密机械零件加工厂家
联系方式
0354-521004214
您当前的位置: 主页 > 检测设备 >

检测设备

DSP编程技巧之:使用代码优化时必须考虑的五大问题

更新时间  2022-01-01 01:11 阅读
本文摘要:前面我们提及了用于编译器的优化选项展开有所不同级别的代码优化的方法。俗话说好马配上好鞍,即使我们有了强劲的代码优化工具,使得我们书写的合乎ANSI/ISOC/C++的代码能被高效继续执行,我们在写出代码时也要考虑到一些适当的原则,从而既能构建代码的优化,也能确保代码的安全性,使得优化操作者会让我们的代码产生预期之外的结果。下面我们就来看一下在用于代码优化时,必需考虑到的五大问题。

乐鱼官网推荐

前面我们提及了用于编译器的优化选项展开有所不同级别的代码优化的方法。俗话说好马配上好鞍,即使我们有了强劲的代码优化工具,使得我们书写的合乎ANSI/ISOC/C++的代码能被高效继续执行,我们在写出代码时也要考虑到一些适当的原则,从而既能构建代码的优化,也能确保代码的安全性,使得优化操作者会让我们的代码产生预期之外的结果。下面我们就来看一下在用于代码优化时,必需考虑到的五大问题。

  1.小心用于编撰表达式  在C/C++代码中,有时候一些操作者难免会对某些CPU寄存器展开操作者,此时要用于嵌入的编撰表达式,例如asm(EALLOW),或者重置某个中断的掩码寄存器等。在优化代码时,编译器不会新的调整某些代码段的顺序,自己要求用于某些寄存器(例如AR0-AR7这样的辅助寄存器),甚至移除某些编译器指出多余的变量、函数等,但是编译器一般情况下并会对嵌入的编撰代码展开任何优化(除非这段编撰代码被编译器指出是总有一天会继续执行到的多余代码),这就造成了编译器的优化效果在这段编撰代码和它的上下文代码中无法展开有效地的优化,尤其是编撰代码和C/C++代码必要不存在变量调用的情况下。所以非必要的情况下,要尽量避免C/C++和编撰语句的混用,如果显然必须的,也要在编译器之后检查分解的编撰代码是不是确保了我们代码本意的完整性。

  2.为适当的内存读取用于volatile关键字  在C/C++代码的编译器过程中,编译器不会分析数据流,从而尽量避免对存储空间的直接存取。但是如果我们要在C/C++代码中必要对内存地址展开操作者的话,必须用于volatile关键字来定义变量,编译器在优化时会对volatile类型的变量展开优化。  例如,在下面的代码中,循环的完结条件为指针指向的地址为0xFF:  unsignedint*ctrl;  while(*ctrl!=0xFF);  因为*ctrl是一个恒定的表达式,这个循环不会被优化为一次内存加载。

乐鱼官网推荐

leyu乐鱼全站app

为了准确构建我们的代码意图,必须把ctrl定义为volatile类型:  volatileunsignedint*ctrl  用于volatile类型定义的类型在调试的时候还有一个很大的优势,就是我们可以必要在CCS的debug窗口里转变变量的值,很大地方之后我们的调试。  3.小心用于Alias变量  Alias(别称)在一个变量可以被最少两种方式读取的时候不会中用,例如,当两个指针指向同一块区域或对象时,我们称之为一个指针alias另一个指针。Alias变量的用于要十分慎重,因为不会牵涉到到非必要的提到,从而毁坏了优化效果。编译器在优化时会分析代码来要求在哪些地方不会产生alias提到,然后在维持代码正确性的基础上激进地优化代码。

  一般情况下,编译器不会假设,如果一个本地变量的地址被传送给某个函数,则这个函数有可能会通过指针操作者转变这个本地变量的内容,但是这个函数无法在该地址被回到后依然可以被别的指针操作者右图用于,例如把这个本地变量的地址分配给一个全局变量或者回到它。如果这种假设被超越,则必须在编译器选项里用于-ma强迫编译器按照最坏情况的别称提到来展开一定的优化,在这种情况下,任何非必要的提到(例如用于指针)都可以提到到这个变量。


本文关键词:DSP,编程技巧,之,使用,代码,优化,时,必须,考虑,leye乐鱼娱乐app

本文来源:leyu乐鱼全站app-www.freeafterprom.com