|
优化与很多有关~~~本想放入水潭,可二姨最近过生日迷糊了~~~
inline//不加inline将增大空间6个字节
void UsiObj::CommandExec(void)
{
...............
}
//inline//加inline将增大空间40个字节
void UsiObj::Exec(void)
{
....................
}
class AdcObj {
private:
unsigned char AdcNum;//加volatile将增大空间72个字节
unsigned char AdcCount;//加volatile将增大空间4个字节
volatile unsigned int AdcSum[8];//不改变
unsigned int AdcMax[8];//加volatile将增大空间4个字节
volatile unsigned int AdcMin[8];//不改变
..............................
};
/*-------------------------------------------------------------------
优化示例:
while (PINB & (1 << SCL));//等待SCL=0主机处理结束
上句将比下句代码多编译16个字节
while ((unsigned char)tmp = (PINB & (1 << SCL)));//等待SCL=0主机处理结束
--------------------------------------------------------------------*/
/*-------------------------------------------------------------------
优化示例:
USIDR = TxBuffer[Count];//发送8位数据1个字节
Count ++;
以上2句将比下句代码多编译26个字节
USIDR = TxBuffer[Count++];//发送8位数据1个字节
--------------------------------------------------------------------*/
/*-------------------------------------------------------------------
优化示例:
if (((USIDR << 4) ^ USIDR) >= 0xf0) {//Command高低4位相反
上句将比下几句代码多编译14个字节
// tmp = USIDR;
// tmp <<= 4;
// tmp ^= USIDR;
// if (tmp >= 0xf0) {//Command高低4位相反
--------------------------------------------------------------------*/
/*-------------------------------------------------------------------
优化示例(此前Status=4):
Status ++;
上句将比下句代码多编译2个字节
Status = 5;
--------------------------------------------------------------------*/
/*-------------------------------------------------------------------
优化示例(此前Status=5):
Status --;
上句将比下句代码多编译6个字节(这个有些不定,至少在2字节以上)
Status = 4;
--------------------------------------------------------------------*/
/*-------------------------------------------------------------------
优化示例:
for(i = 31; i >= 13; i --) {
上句将比下句代码多编译2~4个字节
for(i = 13; i <= 31; i ++) {
--------------------------------------------------------------------*/ |
|