2022年C语言嵌入式系统编程修炼之性能优化 .pdf
《2022年C语言嵌入式系统编程修炼之性能优化 .pdf》由会员分享,可在线阅读,更多相关《2022年C语言嵌入式系统编程修炼之性能优化 .pdf(4页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C 语言嵌入式系统编程修炼之性能优化使用宏定义在 C 语言中,宏是产生内嵌代码的唯一方法。对于嵌入式系统而言,为了能达到性能要求,宏是一种很好的代替函数的方法。写一个 标准 宏 MIN ,这个宏输入两个参数并返回较小的一个:错误做法:#define MIN(A,B) ( A = B ? A : B ) 正确做法:#define MIN(A,B) ( A)= (B) ? (A) : (B) ) 对于宏,我们需要知道三点:(1)宏定义 像函数;(2)宏定义不是函数,因而需要括上所有参数 ;(3)宏定义可能产生副作用。下面的代码:least = MIN(*p+, b); 将被替换为:( (*p+)
2、= (b) ?(*p+):(b) ) 发生的事情无法预料。因而不要给宏定义传入有副作用的参数 。使用寄存器变量当对一个变量频繁被读写时,需要反复访问内存,从而花费大量的存取时间。为此,C语言提供了一种变量,即寄存器变量。这种变量存放在CPU 的寄存器中,使用时,不需要访问内存,而直接从寄存器中读写,从而提高效率。寄存器变量的说明符是register 。对于循环次数较多的循环控制变量及循环体内反复使用的变量均可定义为寄存器变量,而循环计数是应用寄存器变量的最好候选者。(1) 只有局部自动变量和形参才可以定义为寄存器变量。因为寄存器变量属于动态存储方式, 凡需要采用静态存储方式的量都不能定义为寄存
3、器变量,包括:模块间全局变量、模块内全局变量、局部static 变量;(2) register是一个 建议 型关键字,意指程序建议该变量放在寄存器中,但最终该变量可能因为条件不满足并未成为寄存器变量,而是被放在了存储器中,但编译器中并不报错 (在C+语言中有另一个建议 型关键字: inline )。下面是一个采用寄存器变量的例子:/* 求 1+2+3+.+n的值*/ WORD Addition(BYTE n) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 4 页 - -
4、 - - - - - - - register i,s=0; for(i=1;i外部同步RAM外部异步 RAMFLASH/ROM 对于程序代码,已经被烧录在FLASH 或 ROM 中,我们可以让CPU 直接从其中读取代码执行,但通常这不是一个好办法,我们最好在系统启动后将FLASH 或 ROM 中的目标代码拷贝入RAM 中后再执行以提高取指令速度;对于 UART 等设备, 其内部有一定容量的接收BUFFER ,我们应尽量在BUFFER被占满后再向 CPU 提出中断。例如计算机终端在向目标机通过RS-232 传递数据时,不宜设置UART 只接收到一个BYTE 就向 CPU 提中断,从而无谓浪费中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年C语言嵌入式系统编程修炼之性能优化 2022 语言 嵌入式 系统 编程 修炼 性能 优化
限制150内