clobber.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn 0 .data 00000028 00800100 00000296 0000032a 2**0 CONTENTS, ALLOC, LOAD, DATA 1 .text 00000296 00000000 00000000 00000094 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE 2 .bss 00000028 00800128 00800128 00000352 2**0 ALLOC 3 .stab 00000ba0 00000000 00000000 00000354 2**2 CONTENTS, READONLY, DEBUGGING 4 .stabstr 00000950 00000000 00000000 00000ef4 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: 00000000 <__vectors>: 0: 0c 94 34 00 jmp 0x68 ; 0x68 <__ctors_end> 4: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> 8: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> 10: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> 14: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> 18: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> 1c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> 20: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> 24: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> 28: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> 2c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> 30: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> 34: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> 38: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> 3c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> 40: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> 44: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> 48: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> 4c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> 50: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> 54: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> 58: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> 5c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> 60: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> 64: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> 00000068 <__ctors_end>: 68: 11 24 eor r1, r1 6a: 1f be out 0x3f, r1 ; 63 6c: cf ef ldi r28, 0xFF ; 255 6e: d4 e0 ldi r29, 0x04 ; 4 70: de bf out 0x3e, r29 ; 62 72: cd bf out 0x3d, r28 ; 61 00000074 <__do_copy_data>: 74: 11 e0 ldi r17, 0x01 ; 1 76: a0 e0 ldi r26, 0x00 ; 0 78: b1 e0 ldi r27, 0x01 ; 1 7a: e6 e9 ldi r30, 0x96 ; 150 7c: f2 e0 ldi r31, 0x02 ; 2 7e: 02 c0 rjmp .+4 ; 0x84 <.do_copy_data_start> 00000080 <.do_copy_data_loop>: 80: 05 90 lpm r0, Z+ 82: 0d 92 st X+, r0 00000084 <.do_copy_data_start>: 84: a8 32 cpi r26, 0x28 ; 40 86: b1 07 cpc r27, r17 88: d9 f7 brne .-10 ; 0x80 <.do_copy_data_loop> 0000008a <__do_clear_bss>: 8a: 11 e0 ldi r17, 0x01 ; 1 8c: a8 e2 ldi r26, 0x28 ; 40 8e: b1 e0 ldi r27, 0x01 ; 1 90: 01 c0 rjmp .+2 ; 0x94 <.do_clear_bss_start> 00000092 <.do_clear_bss_loop>: 92: 1d 92 st X+, r1 00000094 <.do_clear_bss_start>: 94: a0 35 cpi r26, 0x50 ; 80 96: b1 07 cpc r27, r17 98: e1 f7 brne .-8 ; 0x92 <.do_clear_bss_loop> 9a: 0e 94 53 00 call 0xa6 ; 0xa6
9e: 0c 94 49 01 jmp 0x292 ; 0x292 <_exit> 000000a2 <__bad_interrupt>: a2: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> 000000a6
: volatile uint32_t dot_datas[10] = {0xDEADBEEF,0xDEADBEEF,0xDEADBEEF,0xDEADBEEF,0xDEADBEEF,0xDEADBEEF,0xDEADBEEF,0xDEADBEEF,0xDEADBEEF,0xDEADBEEF}; volatile uint32_t dot_bss[10]; __attribute__((naked)) int main(void) { asm("nop"::); a6: 00 00 nop asm("nop"::); a8: 00 00 nop dot_datas[2] += dot_bss[5]; dot_datas[8] += dot_datas[2]; dot_bss[(dot_bss[5]&0x07)] += dot_datas[9]; } if( dot_datas[6] ) { aa: 6e 01 movw r12, r28 ac: 08 94 sec ae: c1 1c adc r12, r1 b0: d1 1c adc r13, r1 //Now we find the problem with stack-allocated array; its base pointer is... uint16_t adc_readings[8]; uint8_t i; for( i=0; i<8; ++i ) { b2: 81 e1 ldi r24, 0x11 ; 17 b4: a8 2e mov r10, r24 b6: b1 2c mov r11, r1 b8: ac 0e add r10, r28 ba: bd 1e adc r11, r29 asm("nop"::); asm("nop"::); for(;;) { //This is to build up nonsense in the registers if( dot_datas[4] & dot_datas[7] ) { bc: 20 91 10 01 lds r18, 0x0110 c0: 30 91 11 01 lds r19, 0x0111 c4: 40 91 12 01 lds r20, 0x0112 c8: 50 91 13 01 lds r21, 0x0113 cc: 80 91 1c 01 lds r24, 0x011C d0: 90 91 1d 01 lds r25, 0x011D d4: a0 91 1e 01 lds r26, 0x011E d8: b0 91 1f 01 lds r27, 0x011F dc: 82 23 and r24, r18 de: 93 23 and r25, r19 e0: a4 23 and r26, r20 e2: b5 23 and r27, r21 e4: 00 97 sbiw r24, 0x00 ; 0 e6: a1 05 cpc r26, r1 e8: b1 05 cpc r27, r1 ea: 41 f3 breq .-48 ; 0xbc for( dot_bss[5] = 0; dot_bss[5] < 89; ++dot_bss[5] ) { ec: 10 92 3c 01 sts 0x013C, r1 f0: 10 92 3d 01 sts 0x013D, r1 f4: 10 92 3e 01 sts 0x013E, r1 f8: 10 92 3f 01 sts 0x013F, r1 fc: 72 c0 rjmp .+228 ; 0x1e2 dot_datas[2] += dot_bss[5]; fe: 20 91 08 01 lds r18, 0x0108 102: 30 91 09 01 lds r19, 0x0109 106: 40 91 0a 01 lds r20, 0x010A 10a: 50 91 0b 01 lds r21, 0x010B 10e: 80 91 3c 01 lds r24, 0x013C 112: 90 91 3d 01 lds r25, 0x013D 116: a0 91 3e 01 lds r26, 0x013E 11a: b0 91 3f 01 lds r27, 0x013F 11e: 82 0f add r24, r18 120: 93 1f adc r25, r19 122: a4 1f adc r26, r20 124: b5 1f adc r27, r21 126: 80 93 08 01 sts 0x0108, r24 12a: 90 93 09 01 sts 0x0109, r25 12e: a0 93 0a 01 sts 0x010A, r26 132: b0 93 0b 01 sts 0x010B, r27 dot_datas[8] += dot_datas[2]; 136: 20 91 20 01 lds r18, 0x0120 13a: 30 91 21 01 lds r19, 0x0121 13e: 40 91 22 01 lds r20, 0x0122 142: 50 91 23 01 lds r21, 0x0123 146: 80 91 08 01 lds r24, 0x0108 14a: 90 91 09 01 lds r25, 0x0109 14e: a0 91 0a 01 lds r26, 0x010A 152: b0 91 0b 01 lds r27, 0x010B 156: 82 0f add r24, r18 158: 93 1f adc r25, r19 15a: a4 1f adc r26, r20 15c: b5 1f adc r27, r21 15e: 80 93 20 01 sts 0x0120, r24 162: 90 93 21 01 sts 0x0121, r25 166: a0 93 22 01 sts 0x0122, r26 16a: b0 93 23 01 sts 0x0123, r27 dot_bss[(dot_bss[5]&0x07)] += dot_datas[9]; 16e: 80 91 3c 01 lds r24, 0x013C 172: 90 91 3d 01 lds r25, 0x013D 176: a0 91 3e 01 lds r26, 0x013E 17a: b0 91 3f 01 lds r27, 0x013F 17e: 87 70 andi r24, 0x07 ; 7 180: 90 70 andi r25, 0x00 ; 0 182: a0 70 andi r26, 0x00 ; 0 184: b0 70 andi r27, 0x00 ; 0 186: 88 0f add r24, r24 188: 99 1f adc r25, r25 18a: 88 0f add r24, r24 18c: 99 1f adc r25, r25 18e: 88 5d subi r24, 0xD8 ; 216 190: 9e 4f sbci r25, 0xFE ; 254 192: fc 01 movw r30, r24 194: 20 81 ld r18, Z 196: 31 81 ldd r19, Z+1 ; 0x01 198: 42 81 ldd r20, Z+2 ; 0x02 19a: 53 81 ldd r21, Z+3 ; 0x03 19c: e0 90 24 01 lds r14, 0x0124 1a0: f0 90 25 01 lds r15, 0x0125 1a4: 00 91 26 01 lds r16, 0x0126 1a8: 10 91 27 01 lds r17, 0x0127 1ac: 2e 0d add r18, r14 1ae: 3f 1d adc r19, r15 1b0: 40 1f adc r20, r16 1b2: 51 1f adc r21, r17 1b4: 20 83 st Z, r18 1b6: 31 83 std Z+1, r19 ; 0x01 1b8: 42 83 std Z+2, r20 ; 0x02 1ba: 53 83 std Z+3, r21 ; 0x03 asm("nop"::); for(;;) { //This is to build up nonsense in the registers if( dot_datas[4] & dot_datas[7] ) { for( dot_bss[5] = 0; dot_bss[5] < 89; ++dot_bss[5] ) { 1bc: 80 91 3c 01 lds r24, 0x013C 1c0: 90 91 3d 01 lds r25, 0x013D 1c4: a0 91 3e 01 lds r26, 0x013E 1c8: b0 91 3f 01 lds r27, 0x013F 1cc: 01 96 adiw r24, 0x01 ; 1 1ce: a1 1d adc r26, r1 1d0: b1 1d adc r27, r1 1d2: 80 93 3c 01 sts 0x013C, r24 1d6: 90 93 3d 01 sts 0x013D, r25 1da: a0 93 3e 01 sts 0x013E, r26 1de: b0 93 3f 01 sts 0x013F, r27 1e2: 80 91 3c 01 lds r24, 0x013C 1e6: 90 91 3d 01 lds r25, 0x013D 1ea: a0 91 3e 01 lds r26, 0x013E 1ee: b0 91 3f 01 lds r27, 0x013F 1f2: 89 35 cpi r24, 0x59 ; 89 1f4: 91 05 cpc r25, r1 1f6: a1 05 cpc r26, r1 1f8: b1 05 cpc r27, r1 1fa: 08 f4 brcc .+2 ; 0x1fe 1fc: 80 cf rjmp .-256 ; 0xfe dot_datas[2] += dot_bss[5]; dot_datas[8] += dot_datas[2]; dot_bss[(dot_bss[5]&0x07)] += dot_datas[9]; } if( dot_datas[6] ) { 1fe: 80 91 18 01 lds r24, 0x0118 202: 90 91 19 01 lds r25, 0x0119 206: a0 91 1a 01 lds r26, 0x011A 20a: b0 91 1b 01 lds r27, 0x011B 20e: 00 97 sbiw r24, 0x00 ; 0 210: a1 05 cpc r26, r1 212: b1 05 cpc r27, r1 214: 09 f4 brne .+2 ; 0x218 216: 52 cf rjmp .-348 ; 0xbc 218: b6 01 movw r22, r12 21a: a6 01 movw r20, r12 //Now we find the problem with stack-allocated array; its base pointer is... uint16_t adc_readings[8]; uint8_t i; for( i=0; i<8; ++i ) { adc_readings[i] = dot_bss[8]&0xFFFF; 21c: 80 91 48 01 lds r24, 0x0148 220: 90 91 49 01 lds r25, 0x0149 224: a0 91 4a 01 lds r26, 0x014A 228: b0 91 4b 01 lds r27, 0x014B 22c: fa 01 movw r30, r20 22e: 81 93 st Z+, r24 230: 91 93 st Z+, r25 232: af 01 movw r20, r30 if( dot_datas[6] ) { //Now we find the problem with stack-allocated array; its base pointer is... uint16_t adc_readings[8]; uint8_t i; for( i=0; i<8; ++i ) { 234: ea 15 cp r30, r10 236: fb 05 cpc r31, r11 238: 89 f7 brne .-30 ; 0x21c adc_readings[i] = dot_bss[8]&0xFFFF; } dot_datas[0]++; 23a: 80 91 00 01 lds r24, 0x0100 23e: 90 91 01 01 lds r25, 0x0101 242: a0 91 02 01 lds r26, 0x0102 246: b0 91 03 01 lds r27, 0x0103 24a: 01 96 adiw r24, 0x01 ; 1 24c: a1 1d adc r26, r1 24e: b1 1d adc r27, r1 250: 80 93 00 01 sts 0x0100, r24 254: 90 93 01 01 sts 0x0101, r25 258: a0 93 02 01 sts 0x0102, r26 25c: b0 93 03 01 sts 0x0103, r27 260: 21 e0 ldi r18, 0x01 ; 1 262: 30 e0 ldi r19, 0x00 ; 0 for( i=1; i<9; ++i ) { dot_bss[i] = adc_readings[i-1]; 264: fb 01 movw r30, r22 266: 81 91 ld r24, Z+ 268: 91 91 ld r25, Z+ 26a: bf 01 movw r22, r30 26c: a0 e0 ldi r26, 0x00 ; 0 26e: b0 e0 ldi r27, 0x00 ; 0 270: f9 01 movw r30, r18 272: ee 0f add r30, r30 274: ff 1f adc r31, r31 276: ee 0f add r30, r30 278: ff 1f adc r31, r31 27a: e8 5d subi r30, 0xD8 ; 216 27c: fe 4f sbci r31, 0xFE ; 254 27e: 80 83 st Z, r24 280: 91 83 std Z+1, r25 ; 0x01 282: a2 83 std Z+2, r26 ; 0x02 284: b3 83 std Z+3, r27 ; 0x03 286: 2f 5f subi r18, 0xFF ; 255 288: 3f 4f sbci r19, 0xFF ; 255 uint8_t i; for( i=0; i<8; ++i ) { adc_readings[i] = dot_bss[8]&0xFFFF; } dot_datas[0]++; for( i=1; i<9; ++i ) { 28a: 64 17 cp r22, r20 28c: 75 07 cpc r23, r21 28e: 51 f7 brne .-44 ; 0x264 290: 15 cf rjmp .-470 ; 0xbc 00000292 <_exit>: 292: f8 94 cli 00000294 <__stop_program>: 294: ff cf rjmp .-2 ; 0x294 <__stop_program>