|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
做I2c感受到GCC的效率啊 |
作者:Anitya 栏目:单片机 |
分别用GCC和ICC编译相同的一段程序,我编译的是I2c的中断程序.ICC手头上有正版,打勾了Enable Code Compression,GCC的优化参数是默认的Os. GCC: if (twst == TW_SR_SLA_ACK) c4: c0 36 cpi r28, 0x60 ; 96 c6: 61 f0 breq .+24 ; 0xe0 { TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWEA)|(1<<TWIE); } else if (twst == TW_SR_DATA_ACK) c8: c0 38 cpi r28, 0x80 ; 128 ca: 51 f0 breq .+20 ; 0xe0 TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWEA)|(1<<TWIE); } else if (twst == TW_SR_STOP) cc: c0 3a cpi r28, 0xA0 ; 160 ce: 41 f0 breq .+16 ; 0xe0 { TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWEA)|(1<<TWIE); } else if (twst == TW_ST_SLA_ACK) d0: c8 3a cpi r28, 0xA8 ; 168 d2: 11 f0 breq .+4 ; 0xd8 { TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWIE); } else if (twst == TW_ST_DATA_ACK) d4: c8 3b cpi r28, 0xB8 ; 184 d6: 11 f4 brne .+4 ; 0xdc { TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWIE); d8: 85 e8 ldi r24, 0x85 ; 133 da: 03 c0 rjmp .+6 ; 0xe2 } else if (twst == TW_ST_DATA_NACK) dc: c0 3c cpi r28, 0xC0 ; 192 de: 11 f4 brne .+4 ; 0xe4 { TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWEA)|(1<<TWIE); e0: 85 ec ldi r24, 0xC5 ; 197 e2: 86 bf out 0x36, r24 ; 54 } ICC: (0039) if (tmpchr == TW_SR_SLA_ACK) 0050 3640 CPI R20,0x60 0051 F419 BNE 0x0055 (0040) { (0041) TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWEA)|(1<<TWIE); 0052 EC85 LDI R24,0xC5 0053 BF86 OUT P36,R24 (0042) } 0054 C018 RJMP 0x006D (0043) else if (tmpchr == TW_SR_DATA_ACK) 0055 3840 CPI R20,0x80 0056 F419 BNE 0x005A (0044) { (0068) TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWEA)|(1<<TWIE); 0057 EC85 LDI R24,0xC5 0058 BF86 OUT P36,R24 (0069) } 0059 C013 RJMP 0x006D (0070) else if (tmpchr == TW_SR_STOP) 005A 3A40 CPI R20,0xA0 005B F419 BNE 0x005F (0071) { (0076) TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWEA)|(1<<TWIE); 005C EC85 LDI R24,0xC5 005D BF86 OUT P36,R24 (0077) } 005E C00E RJMP 0x006D (0078) else if (tmpchr == TW_ST_SLA_ACK) 005F 3A48 CPI R20,0xA8 0060 F419 BNE 0x0064 (0079) { (0083) TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWIE); 0061 E885 LDI R24,0x85 0062 BF86 OUT P36,R24 (0084) } 0063 C009 RJMP 0x006D (0085)&nb |
2楼: | >>参与讨论 |
作者: qdshen 于 2004/4/13 14:09:00 发布:
我试过:GCC的优化确实不错,接近汇编哦........ |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |