本文主要是介绍c18标准 改进 c语言,MPLAB-C18 C编译器的优化技巧,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
维普资讯 http://doc.xuehai.net
产业技术与信息
H B C C - 编译嚣的优化技巧 PA 1 L 8
■ M c o h p上海代表处 ir c i廖珍爱
M ir c i出的 P C1 c o hp推 I 8系列单片机由于采用改进型
2使用全局变量传递函数参数
当有足够的数据存储空间且该函数不可重载时,可使用全局变量传递函数参数,优化你的代码。因为全局变量编译时将分配固定地址,访问时将使用直接寻址方
的哈佛结构及优化的硬件结构,内含三个间接寻址寄存
器 F RO S和 F R, A和 RO空间都比较大, S、F R1 S2 R M M因此 P C1 I 8非常适合于采用 C语言进行软件设计。C语言 具有可读性强,便于移植等优点。虽然 MP AB— 8C语 L C1 言编译器的编译效率比较高,但与汇编语言相比,C的效率终究差一些,因此在某些应用场合,如何优化 C的效率, 减小代码,提高执行速度,是许多工程师们的追求目标。
式。例如调用 S b u 1子程序,可采用下面使用全局变量传
递函数参数的方法。
n i dc a s bl v r,u u sg e h u n r a ls bl v r; a2
_ _
vi sb (o ) od u l i; v d
下面介绍 MP AB— L C1 C编译器的一些优化技巧,与大家 vi anvi) 8 od i(o{ m d共享。 al; s bl v r=1 u
_
1使用静态型局部变量
a2; s bl v r=2 u
_
sb O ul;
局部变量的缺省存储类型为自动型,存取时使用软} 件堆栈,即使用直接寻址方式。如果声明为静态型,则替代如下传递函数参数的方法。 静态型局部变量编译时将分配固定地址,访问时将使用 vi ̄ lu s e h a1 sge h a2 o s ( i d cavr, i d a vr) d n g n r n u n cr直接寻址。显然,直接寻址比间接寻址存取速度快,占 vo anvi) idm i(od用的代码空间少。下面举例比较静态型与自动型局部变{
量生成汇编代码的差别。 源程序代码
v i sb (od{ od u l i) v sb (, u l1 ) 2}
当然也可以把
v r、v r明为静态型存储类型,达 a 1 a2声//静态型
/自动型//占用 5字/个
s t ni e a cl; t i us nd hroa1 ac g c l
n i d h o l u s e ca l a; n g r c2 l a+5 o l=; c1
到相同优化代码的目的。即: od s b (ttc u sg e v i u 1sai n in d
c a v r,tt n in dc a a2。 h r al s i u s e h r r) ac g v
l a+6 o 1=; c2
}
/仅占用3/个字
3使用合适的数据类型
MP AB C一 8支持的数据类型及占用的字节数如下: L 1
类型
n i dc a u sg e h n r sg e h i dc a n r u sg e t ni di n n
生成的汇编代码
M OVF POS N C,, TI 1F ACCES S M 0VLW X0 0 5 M 0VLB O XO
ADDW F L 1F, , BAN KED
最小值
0 一2 18 0
最大值字节数
2 5 5 17 2 6 53 5 56 1 1 2
sg e t i di n n
n i dsoto g u sg e h r ln n sg e hotln i ds r g n o n i dl g u sg e n n o sg e o g i dln n
2 6 37 8
0 -3 80 8 8 68 0
377 2 6
17 7 5 6 7 21 88 6 7 3 8 0 4 9 6 25 2 49 7 9
2
4 4 8
M OVF P TDEC,, OS 1F ACCES S M 0VLW X0 0 6 M 0VLB O XO M OVW F LOCA L1BAN KED ,
1 7 8 6 8 21 7 8 6 7 24 4 34 44 34 8
注意:①静态型局部变量将占用更多的数据存储器
为静态型。
不同数据类型占用的数据存储器字节数不同,因此
空间;②如果该函数是可重载的,则局部变量不能声明尽可能使用较短的数据类型。另外如果是无符号数,应
声明为无符号型。例如下例变量 i加一立即数,其中 i 、J
8丰.●奉▲田哪 6尊L入菇幢而冒 _ J
这篇关于c18标准 改进 c语言,MPLAB-C18 C编译器的优化技巧的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!