Ещё немного сравнительных результатов от ICC v6.30C и GCC 20040720 соответственно:
Код
; char blink_timer;
; #pragma interrupt_handler timer:4 timer:5
; void timer() {
.dbline 44
; blink_timer++;
lds R24,_blink_timer
subi R24,255 ; addi 1
sts _blink_timer,R24
.dbline -2
L7:
ld R24,y+
out 0x3f,R24
ld R25,y+
ld R24,y+
.dbline 0; func end
reti
Код
;char blink_timer;
;SIGNAL (SIG_OVERFLOW1)
;{
; blink_timer++;
;}
.LM1:
/* prologue: frame size=0 */
push __zero_reg__
push __tmp_reg__
in __tmp_reg__,__SREG__
push __tmp_reg__
clr __zero_reg__
push r24
/* prologue end (size=6) */
.stabn 68,0,69,.LM2-__vector_14
.LM2:
lds r24,blink_timer
subi r24,lo8(-(1))
sts blink_timer,r24
/* epilogue: frame size=0 */
pop r24
pop __tmp_reg__
out __SREG__,__tmp_reg__
pop __tmp_reg__
pop __zero_reg__
reti