keil编译C语言代码

[复制链接]
2711|6
 楼主| tao180539 发表于 2011-11-29 21:16 | 显示全部楼层 |阅读模式
我的51F系列单片机在C语言编译时候
有的语句 我换一下行 编译代码的大小就不同
举个例子
unsigned int a;
unsigned int b;

b=c+d;  第一行
c=m;      第二行
c=k*10; 第三行

我把第二行的语句放到第三行下面 编译后代码大小就不同 大家谁能解释一下
用keil4编译的
HWM 发表于 2011-11-29 22:41 | 显示全部楼层
to LZ:

这很正常。因为MCU具体进行计算会用到寄存器,而寄存器的调配会随计算次序的不同而有所不同。如此,所用指令也不尽相同,所以最终代码长度会不同。
ayb_ice 发表于 2011-11-30 08:06 | 显示全部楼层
LZ的写法中间的那个
c=m;其实被忽略了,因为没有意义,当然前提是局部变量
全局变量也可能不一样,这没有什么奇怪的,
 楼主| tao180539 发表于 2011-11-30 08:40 | 显示全部楼层
2# HWM
依照阁下的意思  怎么才能做到代码最优化
ayb_ice 发表于 2011-11-30 08:44 | 显示全部楼层
基本的优化大家都懂一些,比如尽量用局部变量,尽量使用特定指针等等
但更重要的是从软件架构上去优化,这种优化威力更大,并且可移植,通用性更好
HWM 发表于 2011-11-30 09:11 | 显示全部楼层
2# HWM  
依照阁下的意思  怎么才能做到代码最优化
tao180539 发表于 2011-11-30 08:40

“代码优化”其实一句话就够了,那就是别去做那些“多此一举”的事情。

c=m;      第二行
c=k*10; 第三行


无论如何调换,那显然是总有一行是多此一举。
 楼主| tao180539 发表于 2011-11-30 21:41 | 显示全部楼层
5# ayb_ice
能否提供本关于这方面的书 我总感觉软件架构设计的不好呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

321

主题

515

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部