|
| 关于C++在WINAVR上的优化问题 |
|
雁塔菜农 发表于 2006-11-9 19:17:00 |
|
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 ++) { --------------------------------------------------------------------*/ | |
|
|
| Re:关于C++在WINAVR上的优化问题 |
|
访客Jne5Hu(游客)发表评论于2008-4-27 21:00:00 |
高手 | |
|
|
|
|
|