电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>DSP>DSP编程技巧之五大使用代码优化的问题解析

DSP编程技巧之五大使用代码优化的问题解析

2017-10-17 | rar | 0.1 MB | 次下载 | 免费

资料介绍

  1. 小心使用汇编表达式

  在C/C++代码中,有时候一些操作难免会对某些CPU寄存器进行操作,此时要使用内嵌的汇编表达式,例如asm(“EALLOW”),或者重置某个中断的掩码寄存器等。在优化代码时,编译器会重新调整某些代码段的顺序,自己决定使用某些寄存器(例如AR0-AR7这样的辅助寄存器),甚至删除某些编译器认为无用的变量、函数等,但是编译器一般情况下并不会对内嵌的汇编代码进行任何优化(除非这段汇编代码被编译器认为是永远不会执行到的无用代码),这就造成了编译器的优化效果在这段汇编代码和它的上下文代码中无法进行有效的优化,特别是汇编代码和C/C++代码直接存在变量调用的情况下。所以非必要的情况下,要尽量避免C/C++和汇编语句的混用,如果确实需要的,也要在编译之后检查生成的汇编代码是不是保证了我们代码原意的完整性。

  2. 为必要的内存存取使用volatile关键字

  在C/C++代码的编译过程中,编译器会分析数据流,从而尽量避免对存储空间的直接存取。但是如果我们要在C/C++代码中直接对内存地址进行操作的话,需要使用volatile关键字来定义变量,编译器在优化时不会对volatile类型的变量进行优化。

  例如,在下面的代码中,循环的结束条件为指针指向的地址为0xFF:

  unsigned int *ctrl;

  while (*ctrl !=0xFF);

  因为*ctrl是一个不变的表达式,这个循环会被优化为一次内存读取。为了正确实现我们的代码意图,需要把ctrl定义为volatile类型:

  volatile unsigned int *ctrl

  使用volatile类型定义的类型在调试的时候还有一个极大的优势,就是我们可以直接在CCS的debug窗口里改变变量的值,极大地方便我们的调试。

  3. 小心使用Alias变量

  Alias(别名)在一个变量可以被至少两种方式存取的时候会用到,例如,当两个指针指向同一块区域或对象时,我们称一个指针 alias 另一个指针。Alias变量的使用要非常谨慎,因为会涉及到非直接的引用,从而破坏了优化效果。编译器在优化时会分析代码来决定在哪些地方会产生alias引用,然后在保持代码正确性的基础上“保守”地优化代码。

  一般情况下,编译器会假设,如果一个本地变量的地址被传递给某个函数,则这个函数有可能会通过指针操作改变这个本地变量的内容,但是这个函数不能在该地址被返回后仍然可以被别的指针操作所示使用,例如把这个本地变量的地址分配给一个全局变量或者返回它。如果这种假设被打破,则需要在编译器选项里使用-ma强制编译器按照最坏情况的别名引用来进行一定的优化,在这种情况下,任何非直接的引用(例如使用指针)都可以引用到这个变量。

下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1电子电路原理第七版PDF电子教材免费下载
  2. 0.00 MB  |  1489次下载  |  免费
  3. 2单片机典型实例介绍
  4. 18.19 MB  |  91次下载  |  1 积分
  5. 3S7-200PLC编程实例详细资料
  6. 1.17 MB  |  27次下载  |  1 积分
  7. 4笔记本电脑主板的元件识别和讲解说明
  8. 4.28 MB  |  18次下载  |  4 积分
  9. 5开关电源原理及各功能电路详解
  10. 0.38 MB  |  9次下载  |  免费
  11. 6基于AT89C2051/4051单片机编程器的实验
  12. 0.11 MB  |  4次下载  |  免费
  13. 7基于单片机和 SG3525的程控开关电源设计
  14. 0.23 MB  |  3次下载  |  免费
  15. 8基于单片机的红外风扇遥控
  16. 0.23 MB  |  3次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234313次下载  |  免费
  3. 2PADS 9.0 2009最新版 -下载
  4. 0.00 MB  |  66304次下载  |  免费
  5. 3protel99下载protel99软件下载(中文版)
  6. 0.00 MB  |  51209次下载  |  免费
  7. 4LabView 8.0 专业版下载 (3CD完整版)
  8. 0.00 MB  |  51043次下载  |  免费
  9. 5555集成电路应用800例(新编版)
  10. 0.00 MB  |  33562次下载  |  免费
  11. 6接口电路图大全
  12. 未知  |  30319次下载  |  免费
  13. 7Multisim 10下载Multisim 10 中文版
  14. 0.00 MB  |  28588次下载  |  免费
  15. 8开关电源设计实例指南
  16. 未知  |  21539次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935053次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537791次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420026次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234313次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233045次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191183次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183277次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138039次下载  |  免费