разница в 4 байта, с учетом что это ардуино, смешно. А ведь все не хуже все чем на ассемблере (весь листинг):
Спойлер
Код: Выделить всё
00000000 <__vectors>:
0: 0a c0 rjmp .+20 ; 0x16 <__ctors_end>
2: 11 c0 rjmp .+34 ; 0x26 <__bad_interrupt>
4: 10 c0 rjmp .+32 ; 0x26 <__bad_interrupt>
6: 0f c0 rjmp .+30 ; 0x26 <__bad_interrupt>
8: 0e c0 rjmp .+28 ; 0x26 <__bad_interrupt>
a: 0d c0 rjmp .+26 ; 0x26 <__bad_interrupt>
c: 0c c0 rjmp .+24 ; 0x26 <__bad_interrupt>
e: 0b c0 rjmp .+22 ; 0x26 <__bad_interrupt>
10: 0a c0 rjmp .+20 ; 0x26 <__bad_interrupt>
12: 09 c0 rjmp .+18 ; 0x26 <__bad_interrupt>
14: 08 c0 rjmp .+16 ; 0x26 <__bad_interrupt>
00000016 <__ctors_end>:
16: 11 27 eor r17, r17
18: 1f bf out 0x3f, r17 ; 63
1a: cf e5 ldi r28, 0x5F ; 95
1c: d0 e0 ldi r29, 0x00 ; 0
1e: de bf out 0x3e, r29 ; 62
20: cd bf out 0x3d, r28 ; 61
22: 02 d0 rcall .+4 ; 0x28 <main>
24: 0c c0 rjmp .+24 ; 0x3e <_exit>
00000026 <__bad_interrupt>:
26: ec cf rjmp .-40 ; 0x0 <__vectors>
00000028 <main>:
#include <avr/io.h>
#include <stdint.h>
int main (void) {
DDRB = 1; // PB0 as an output
28: 41 e0 ldi r20, 0x01 ; 1
2a: 41 b9 out 0x01, r20 ; 1
TCCR0A = 1<<COM0A0 | 0<<WGM00; // Toggle OC0A, CTC mode
2c: 40 e4 ldi r20, 0x40 ; 64
2e: 4e bd out 0x2e, r20 ; 46
TCCR0B = 1<<WGM02 | 3<<CS00; // CTC mode; use OCR0A; /64
30: 4b e0 ldi r20, 0x0B ; 11
32: 4d bd out 0x2d, r20 ; 45
OCR0A = 15624; // 1 second; ie 0.5Hz
34: 48 e0 ldi r20, 0x08 ; 8
36: 5d e3 ldi r21, 0x3D ; 61
38: 57 bd out 0x27, r21 ; 39
3a: 46 bd out 0x26, r20 ; 38
3c: ff cf rjmp .-2 ; 0x3c <__CCP__>
0000003e <_exit>:
3e: f8 94 cli
00000040 <__stop_program>:
40: ff cf rjmp .-2 ; 0x40 <__stop_program>


