Вот такое оно накомпилячило <asm>
../../exe/foo.elf: file format elf32-avr
Disassembly of section .text:
00000000 <__vectors>:
0: 0e c0 rjmp .+28 ; 0x1e <__ctors_end>
2: 40 c0 rjmp .+128 ; 0x84 <__vector_1>
4: 28 c0 rjmp .+80 ; 0x56 <__bad_interrupt>
6: 27 c0 rjmp .+78 ; 0x56 <__bad_interrupt>
8: 26 c0 rjmp .+76 ; 0x56 <__bad_interrupt>
a: 25 c0 rjmp .+74 ; 0x56 <__bad_interrupt>
c: 24 c0 rjmp .+72 ; 0x56 <__bad_interrupt>
e: 23 c0 rjmp .+70 ; 0x56 <__bad_interrupt>
10: 22 c0 rjmp .+68 ; 0x56 <__bad_interrupt>
12: 21 c0 rjmp .+66 ; 0x56 <__bad_interrupt>
14: 20 c0 rjmp .+64 ; 0x56 <__bad_interrupt>
16: 1f c0 rjmp .+62 ; 0x56 <__bad_interrupt>
18: 1e c0 rjmp .+60 ; 0x56 <__bad_interrupt>
1a: 1d c0 rjmp .+58 ; 0x56 <__bad_interrupt>
1c: 1c c0 rjmp .+56 ; 0x56 <__bad_interrupt>
0000001e <__ctors_end>:
1e: 11 24 eor r1, r1
20: 1f be out 0x3f, r1 ; 63
22: cf e5 ldi r28, 0x5F ; 95
24: d1 e0 ldi r29, 0x01 ; 1
26: de bf out 0x3e, r29 ; 62
28: cd bf out 0x3d, r28 ; 61
0000002a <__do_copy_data>:
2a: 10 e0 ldi r17, 0x00 ; 0
2c: a0 e6 ldi r26, 0x60 ; 96
2e: b0 e0 ldi r27, 0x00 ; 0
30: e8 e9 ldi r30, 0x98 ; 152
32: f0 e0 ldi r31, 0x00 ; 0
34: 03 c0 rjmp .+6 ; 0x3c <.do_copy_data_start>
00000036 <.do_copy_data_loop>:
36: c8 95 lpm
38: 31 96 adiw r30, 0x01 ; 1
3a: 0d 92 st X+, r0
0000003c <.do_copy_data_start>:
3c: a0 36 cpi r26, 0x60 ; 96
3e: b1 07 cpc r27, r17
40: d1 f7 brne .-12 ; 0x36 <.do_copy_data_loop>
00000042 <__do_clear_bss>:
42: 10 e0 ldi r17, 0x00 ; 0
44: a0 e6 ldi r26, 0x60 ; 96
46: b0 e0 ldi r27, 0x00 ; 0
48: 01 c0 rjmp .+2 ; 0x4c <.do_clear_bss_start>
0000004a <.do_clear_bss_loop>:
4a: 1d 92 st X+, r1
0000004c <.do_clear_bss_start>:
4c: a1 36 cpi r26, 0x61 ; 97
4e: b1 07 cpc r27, r17
50: e1 f7 brne .-8 ; 0x4a <.do_clear_bss_loop>
52: 20 d0 rcall .+64 ; 0x94 <main>
54: 20 c0 rjmp .+64 ; 0x96 <_exit>
00000056 <__bad_interrupt>:
56: d4 cf rjmp .-88 ; 0x0 <__vectors>
00000058 <INT0_vect_body>:
uint8_t val;
void INT0_vect_body(void) __attribute__((signal));
void INT0_vect_body(void)
{
58: 1f 92 push r1
5a: 0f 92 push r0
5c: 0f b6 in r0, 0x3f ; 63
5e: 0f 92 push r0
60: 11 24 eor r1, r1
62: 8f 93 push r24
if( --val == 0 ) {
64: 80 91 60 00 lds r24, 0x0060
68: 81 50 subi r24, 0x01 ; 1
6a: 80 93 60 00 sts 0x0060, r24
6e: 88 23 and r24, r24
70: 19 f4 brne .+6 ; 0x78 <INT0_vect_body+0x20>
val = 100;
72: 84 e6 ldi r24, 0x64 ; 100
74: 80 93 60 00 sts 0x0060, r24
78: 8f 91 pop r24
7a: 0f 90 pop r0
7c: 0f be out 0x3f, r0 ; 63
7e: 0f 90 pop r0
80: 1f 90 pop r1
82: 18 95 reti
00000084 <__vector_1>:
}
}
void INT0_vect(void) __attribute__((naked));
void INT0_vect(void)
{
84: 0f 92 push r0
86: 00 90 60 00 lds r0, 0x0060
8a: 08 ba out 0x18, r0 ; 24
__asm__ volatile (
"push __tmp_reg__ \n\t"
"lds __tmp_reg__, val \n\t"
"out %0, __tmp_reg__ \n\t"
: : "I" (_SFR_IO_ADDR(PORTB))
);
sei();
8c: 78 94 sei
INT0_vect_body();
8e: e4 df rcall .-56 ; 0x58 <INT0_vect_body>
__asm__ volatile (
90: 0f 90 pop r0
92: 18 95 reti
00000094 <main>:
"pop __tmp_reg__ \n\t"
"reti"
: :
);
}
void main(void)
{
94: ff cf rjmp .-2 ; 0x94 <main>
00000096 <_exit>:
96: ff cf rjmp .-2 ; 0x96 <_exit>
</asm>