打印

[讨论]用C语言写代码,如何优化代码尺寸大小

[复制链接]
13797|97
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
古道热肠|  楼主 | 2009-6-29 15:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用C语言做开发,开发速度是快,但写出的代码稍不留心,就做成一个大胖子了.在嵌入式应用中,有时很关注成本与性价比,往往希望能在性价比上找到平衡点,代码尺寸的优化就显得很重要了.
当然,针对熟悉的8位51单片机,大家都知道的方法和原则我先列几个,不在讨论之列
俺常用的瘦身密绝
1.能用unsigned char 的不用unsinged int,依些类推到ulong
2.能定义到data空间的不用定义到idata,更不要定义到Xdata
3........
哈哈,大家补充.

相关帖子

沙发
古道热肠|  楼主 | 2009-6-29 15:31 | 只看该作者

俺觉得合理使用函数的入口参数作变量较为有效

因为C语言在函数调用时是采用复制变量的数据传递机制,入口变量可放心大胆地用.
比如如下写法就较小的代码尺寸
ComShowString(uchar ucCount; uchar *ucDataBuf)
{
    while(ucCount--)
   {
     WriteComOneByte(*ucDataBuff++);
   }
}

使用特权

评论回复
板凳
computer00| | 2009-6-29 15:55 | 只看该作者

做大事者,不拘小节~~~~

使用特权

评论回复
地板
古道热肠|  楼主 | 2009-6-29 16:33 | 只看该作者

哈哈,精益求精的精神不能丢

虽然有n多个理由可能不必关心代码太小,但俺在过去的确遇到过代码胖到接近64K,弄得稍微改一改功能,就编译超空间的应用实例.假如从一开始就形成良好的代码编写习惯,也许可以延长那个产品的寿命.
哈哈,还是瘦点好.

使用特权

评论回复
5
古道热肠|  楼主 | 2009-6-29 16:39 | 只看该作者

"细节决定成败",这句话貌似很流行,没看过那本书

使用特权

评论回复
6
呆板书生| | 2009-6-29 19:53 | 只看该作者

.

计数器能做减法的就尽量用减法

小心某人谴责我们搞技巧,闪...

使用特权

评论回复
7
ayb_ice| | 2009-6-29 20:57 | 只看该作者

使用特定指针

使用特权

评论回复
8
lelee007| | 2009-6-30 03:27 | 只看该作者

3L正解

不过51的时代过去了,现在差不多成肥猪流了吧

现在主流的单片机,RAM,ROM,大把大把的空间

放心的奔吧,就像圈圈说的那样,哈哈哈哈哈

使用特权

评论回复
9
古道热肠|  楼主 | 2009-6-30 12:08 | 只看该作者

记得有人说过指针比数组更省代码,大家以为呢?

在C51中对指针进行限定,更能节省空间和提高速度,8楼所提到的确是优化速度和代码的绝招,就是可移植性变差了,当然,在关注代码尺寸时,不能兼顾可移植性了.

使用特权

评论回复
10
McuPlayer| | 2009-6-30 12:34 | 只看该作者

为什么非把数组和指针独立起来?

数组的名字(保存首地址常量)就是指针,而且是个死指针,不会挪动的const指针
下面这个用法恐怕很多人用过吧,这不正是数组和指针的成功合作嘛。

u8 myBytes[4] = {0x00,0x10,0xAA,0x55};
u16 myWord;

myWord = * ( (u16*)(myBytes+2) );

当然也可以写成
myWord = ((u16)myByte[3]<<8) | (u16)myByte[2];

使用特权

评论回复
11
McuPlayer| | 2009-6-30 12:37 | 只看该作者

还有一点忘记了

指针进行类型转换的时候一定要注意大小端的问题

Keil的C51是大端模式,他延续了Intel在MCS51工具上的当年的做法
我个人比较喜欢小段模式,ARM最好了,大小端任你选,没人有意见了

使用特权

评论回复
12
将军令| | 2009-6-30 14:02 | 只看该作者

省下几个自己的memory会发财吗?

不要为了几个字节memory space为难自己

使用特权

评论回复
13
huangqi412| | 2009-6-30 14:12 | 只看该作者

写过次衣隆,打死不干这事了,...

使用特权

评论回复
14
Txapp| | 2009-6-30 15:07 | 只看该作者

optimizing

在保证软件系统的正确性、稳定性、可读性及可测性的前提下,提高代码效率,不要一味追求紧凑的代码

使用特权

评论回复
15
古道热肠|  楼主 | 2009-6-30 15:40 | 只看该作者

一场势均力敌的象棋的比赛,有时就赢在是否用好一个小兵上

本贴重点是讨论代码尺寸优化问题,大家不要跑题.

使用特权

评论回复
16
古道热肠|  楼主 | 2009-6-30 15:50 | 只看该作者

俺觉得用好全局变量也能优化代码尺寸

如果变量由主调上层函数到底层函数通过入口参数传递了很多次,内存够用的话,可以考虑用全局变量来替代,使函数进入与返回时不用做很多传入与传出的操作.

使用特权

评论回复
17
ayb_ice| | 2009-7-1 21:15 | 只看该作者

良好的程序架构是最好的优化程序

另外注意指针别名操作,其实变量也有别名操作

使用特权

评论回复
18
delin17| | 2009-7-1 22:43 | 只看该作者

仰望高人

仰望高人,曾因ROM爆掉,一改再改程序。。
有很多时候还是要注意程序大小的

使用特权

评论回复
19
itelectron| | 2009-7-1 23:15 | 只看该作者

同18 楼良好的程序架构是最好的优化程序

同18 楼良好的程序架构是最好的优化程序
------------------------------------------
能不用全局变量  就 尽量 不用!
耦合严重 会出现预想不到的 效果!!!

使用特权

评论回复
20
zoupeng139| | 2009-7-2 08:55 | 只看该作者

我得有时候内部RAM不够了

造成显示部分有时候会错乱执行
不知是不是内部ram少的原因还是没有加程序冗余的原因

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

284

主题

6411

帖子

16

粉丝