Hur mycket går det att slakta i denna kod?
Postat: 22 januari 2012, 17:02:15
Källa www.jonshobby.se/elforum/Blink-LED_Atmega16U4.zip
Blinking_LED.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 0000017c 00000000 00000000 00000074 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .bss 00000002 00800100 00800100 000001f0 2**0
ALLOC
2 .debug_aranges 00000020 00000000 00000000 000001f0 2**0
CONTENTS, READONLY, DEBUGGING
3 .debug_pubnames 00000057 00000000 00000000 00000210 2**0
CONTENTS, READONLY, DEBUGGING
4 .debug_info 0000012c 00000000 00000000 00000267 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_abbrev 000000be 00000000 00000000 00000393 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_line 000001ce 00000000 00000000 00000451 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_frame 00000040 00000000 00000000 00000620 2**2
CONTENTS, READONLY, DEBUGGING
8 .debug_str 0000013b 00000000 00000000 00000660 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 56 00 jmp 0xac ; 0xac <__ctors_end>
4: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
8: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
c: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
10: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
14: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
18: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
1c: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
20: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
24: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
28: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
2c: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
30: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
34: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
38: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
3c: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
40: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
44: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
48: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
4c: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
50: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
54: 0c 94 a2 00 jmp 0x144 ; 0x144 <__vector_21>
58: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
5c: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
60: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
64: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
68: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
6c: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
70: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
74: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
78: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
7c: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
80: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
84: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
88: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
8c: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
90: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
94: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
98: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
9c: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
a0: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
a4: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
a8: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
000000ac <__ctors_end>:
ac: 11 24 eor r1, r1
ae: 1f be out 0x3f, r1 ; 63
b0: cf ef ldi r28, 0xFF ; 255
b2: d5 e0 ldi r29, 0x05 ; 5
b4: de bf out 0x3e, r29 ; 62
b6: cd bf out 0x3d, r28 ; 61
000000b8 <__do_clear_bss>:
b8: 11 e0 ldi r17, 0x01 ; 1
ba: a0 e0 ldi r26, 0x00 ; 0
bc: b1 e0 ldi r27, 0x01 ; 1
be: 01 c0 rjmp .+2 ; 0xc2 <.do_clear_bss_start>
000000c0 <.do_clear_bss_loop>:
c0: 1d 92 st X+, r1
000000c2 <.do_clear_bss_start>:
c2: a2 30 cpi r26, 0x02 ; 2
c4: b1 07 cpc r27, r17
c6: e1 f7 brne .-8 ; 0xc0 <.do_clear_bss_loop>
c8: 0e 94 91 00 call 0x122 ; 0x122 <main>
cc: 0c 94 bc 00 jmp 0x178 ; 0x178 <_exit>
000000d0 <__bad_interrupt>:
d0: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
000000d4 <SetupHardware>:
d4: 84 b7 in r24, 0x34 ; 52
d6: 87 7f andi r24, 0xF7 ; 247
d8: 84 bf out 0x34, r24 ; 52
da: 88 e1 ldi r24, 0x18 ; 24
dc: 0f b6 in r0, 0x3f ; 63
de: f8 94 cli
e0: 80 93 60 00 sts 0x0060, r24
e4: 10 92 60 00 sts 0x0060, r1
e8: 0f be out 0x3f, r0 ; 63
ea: 80 e0 ldi r24, 0x00 ; 0
ec: 90 e0 ldi r25, 0x00 ; 0
ee: 20 e8 ldi r18, 0x80 ; 128
f0: 0f b6 in r0, 0x3f ; 63
f2: f8 94 cli
f4: 20 93 61 00 sts 0x0061, r18
f8: 80 93 61 00 sts 0x0061, r24
fc: 0f be out 0x3f, r0 ; 63
fe: 9f ef ldi r25, 0xFF ; 255
100: 94 b9 out 0x04, r25 ; 4
102: 80 ec ldi r24, 0xC0 ; 192
104: 87 b9 out 0x07, r24 ; 7
106: 9a b9 out 0x0a, r25 ; 10
108: 80 e4 ldi r24, 0x40 ; 64
10a: 8d b9 out 0x0d, r24 ; 13
10c: 83 ef ldi r24, 0xF3 ; 243
10e: 80 bb out 0x10, r24 ; 16
110: 92 e0 ldi r25, 0x02 ; 2
112: 94 bd out 0x24, r25 ; 36
114: 85 e0 ldi r24, 0x05 ; 5
116: 85 bd out 0x25, r24 ; 37
118: 8e e4 ldi r24, 0x4E ; 78
11a: 87 bd out 0x27, r24 ; 39
11c: 90 93 6e 00 sts 0x006E, r25
120: 08 95 ret
00000122 <main>:
122: 80 e8 ldi r24, 0x80 ; 128
124: 85 bf out 0x35, r24 ; 53
126: 85 bf out 0x35, r24 ; 53
128: 0e 94 6a 00 call 0xd4 ; 0xd4 <SetupHardware>
12c: 78 94 sei
12e: 90 e4 ldi r25, 0x40 ; 64
130: 80 91 01 01 lds r24, 0x0101
134: 88 23 and r24, r24
136: e1 f3 breq .-8 ; 0x130 <main+0xe>
138: 8e b1 in r24, 0x0e ; 14
13a: 89 27 eor r24, r25
13c: 8e b9 out 0x0e, r24 ; 14
13e: 10 92 01 01 sts 0x0101, r1
142: f6 cf rjmp .-20 ; 0x130 <main+0xe>
00000144 <__vector_21>:
144: 1f 92 push r1
146: 0f 92 push r0
148: 0f b6 in r0, 0x3f ; 63
14a: 0f 92 push r0
14c: 11 24 eor r1, r1
14e: 8f 93 push r24
150: 80 91 00 01 lds r24, 0x0100
154: 8f 5f subi r24, 0xFF ; 255
156: 80 93 00 01 sts 0x0100, r24
15a: 80 91 00 01 lds r24, 0x0100
15e: 84 36 cpi r24, 0x64 ; 100
160: 28 f0 brcs .+10 ; 0x16c <__vector_21+0x28>
162: 10 92 00 01 sts 0x0100, r1
166: 81 e0 ldi r24, 0x01 ; 1
168: 80 93 01 01 sts 0x0101, r24
16c: 8f 91 pop r24
16e: 0f 90 pop r0
170: 0f be out 0x3f, r0 ; 63
172: 0f 90 pop r0
174: 1f 90 pop r1
176: 18 95 reti
00000178 <_exit>:
178: f8 94 cli
0000017a <__stop_program>:
17a: ff cf rjmp .-2 ; 0x17a <__stop_program>
Hur mycket går det att slakta i denna kod?
Jag vill sätta datariktningsregistret. Tända och släcka 0x0e pin x. Inget annat. Ingen fördröjning(jag skriver en egen loop i loop). Quick and dirty.
Blinking_LED.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 0000017c 00000000 00000000 00000074 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .bss 00000002 00800100 00800100 000001f0 2**0
ALLOC
2 .debug_aranges 00000020 00000000 00000000 000001f0 2**0
CONTENTS, READONLY, DEBUGGING
3 .debug_pubnames 00000057 00000000 00000000 00000210 2**0
CONTENTS, READONLY, DEBUGGING
4 .debug_info 0000012c 00000000 00000000 00000267 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_abbrev 000000be 00000000 00000000 00000393 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_line 000001ce 00000000 00000000 00000451 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_frame 00000040 00000000 00000000 00000620 2**2
CONTENTS, READONLY, DEBUGGING
8 .debug_str 0000013b 00000000 00000000 00000660 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 56 00 jmp 0xac ; 0xac <__ctors_end>
4: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
8: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
c: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
10: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
14: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
18: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
1c: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
20: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
24: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
28: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
2c: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
30: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
34: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
38: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
3c: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
40: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
44: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
48: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
4c: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
50: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
54: 0c 94 a2 00 jmp 0x144 ; 0x144 <__vector_21>
58: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
5c: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
60: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
64: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
68: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
6c: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
70: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
74: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
78: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
7c: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
80: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
84: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
88: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
8c: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
90: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
94: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
98: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
9c: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
a0: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
a4: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
a8: 0c 94 68 00 jmp 0xd0 ; 0xd0 <__bad_interrupt>
000000ac <__ctors_end>:
ac: 11 24 eor r1, r1
ae: 1f be out 0x3f, r1 ; 63
b0: cf ef ldi r28, 0xFF ; 255
b2: d5 e0 ldi r29, 0x05 ; 5
b4: de bf out 0x3e, r29 ; 62
b6: cd bf out 0x3d, r28 ; 61
000000b8 <__do_clear_bss>:
b8: 11 e0 ldi r17, 0x01 ; 1
ba: a0 e0 ldi r26, 0x00 ; 0
bc: b1 e0 ldi r27, 0x01 ; 1
be: 01 c0 rjmp .+2 ; 0xc2 <.do_clear_bss_start>
000000c0 <.do_clear_bss_loop>:
c0: 1d 92 st X+, r1
000000c2 <.do_clear_bss_start>:
c2: a2 30 cpi r26, 0x02 ; 2
c4: b1 07 cpc r27, r17
c6: e1 f7 brne .-8 ; 0xc0 <.do_clear_bss_loop>
c8: 0e 94 91 00 call 0x122 ; 0x122 <main>
cc: 0c 94 bc 00 jmp 0x178 ; 0x178 <_exit>
000000d0 <__bad_interrupt>:
d0: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
000000d4 <SetupHardware>:
d4: 84 b7 in r24, 0x34 ; 52
d6: 87 7f andi r24, 0xF7 ; 247
d8: 84 bf out 0x34, r24 ; 52
da: 88 e1 ldi r24, 0x18 ; 24
dc: 0f b6 in r0, 0x3f ; 63
de: f8 94 cli
e0: 80 93 60 00 sts 0x0060, r24
e4: 10 92 60 00 sts 0x0060, r1
e8: 0f be out 0x3f, r0 ; 63
ea: 80 e0 ldi r24, 0x00 ; 0
ec: 90 e0 ldi r25, 0x00 ; 0
ee: 20 e8 ldi r18, 0x80 ; 128
f0: 0f b6 in r0, 0x3f ; 63
f2: f8 94 cli
f4: 20 93 61 00 sts 0x0061, r18
f8: 80 93 61 00 sts 0x0061, r24
fc: 0f be out 0x3f, r0 ; 63
fe: 9f ef ldi r25, 0xFF ; 255
100: 94 b9 out 0x04, r25 ; 4
102: 80 ec ldi r24, 0xC0 ; 192
104: 87 b9 out 0x07, r24 ; 7
106: 9a b9 out 0x0a, r25 ; 10
108: 80 e4 ldi r24, 0x40 ; 64
10a: 8d b9 out 0x0d, r24 ; 13
10c: 83 ef ldi r24, 0xF3 ; 243
10e: 80 bb out 0x10, r24 ; 16
110: 92 e0 ldi r25, 0x02 ; 2
112: 94 bd out 0x24, r25 ; 36
114: 85 e0 ldi r24, 0x05 ; 5
116: 85 bd out 0x25, r24 ; 37
118: 8e e4 ldi r24, 0x4E ; 78
11a: 87 bd out 0x27, r24 ; 39
11c: 90 93 6e 00 sts 0x006E, r25
120: 08 95 ret
00000122 <main>:
122: 80 e8 ldi r24, 0x80 ; 128
124: 85 bf out 0x35, r24 ; 53
126: 85 bf out 0x35, r24 ; 53
128: 0e 94 6a 00 call 0xd4 ; 0xd4 <SetupHardware>
12c: 78 94 sei
12e: 90 e4 ldi r25, 0x40 ; 64
130: 80 91 01 01 lds r24, 0x0101
134: 88 23 and r24, r24
136: e1 f3 breq .-8 ; 0x130 <main+0xe>
138: 8e b1 in r24, 0x0e ; 14
13a: 89 27 eor r24, r25
13c: 8e b9 out 0x0e, r24 ; 14
13e: 10 92 01 01 sts 0x0101, r1
142: f6 cf rjmp .-20 ; 0x130 <main+0xe>
00000144 <__vector_21>:
144: 1f 92 push r1
146: 0f 92 push r0
148: 0f b6 in r0, 0x3f ; 63
14a: 0f 92 push r0
14c: 11 24 eor r1, r1
14e: 8f 93 push r24
150: 80 91 00 01 lds r24, 0x0100
154: 8f 5f subi r24, 0xFF ; 255
156: 80 93 00 01 sts 0x0100, r24
15a: 80 91 00 01 lds r24, 0x0100
15e: 84 36 cpi r24, 0x64 ; 100
160: 28 f0 brcs .+10 ; 0x16c <__vector_21+0x28>
162: 10 92 00 01 sts 0x0100, r1
166: 81 e0 ldi r24, 0x01 ; 1
168: 80 93 01 01 sts 0x0101, r24
16c: 8f 91 pop r24
16e: 0f 90 pop r0
170: 0f be out 0x3f, r0 ; 63
172: 0f 90 pop r0
174: 1f 90 pop r1
176: 18 95 reti
00000178 <_exit>:
178: f8 94 cli
0000017a <__stop_program>:
17a: ff cf rjmp .-2 ; 0x17a <__stop_program>
Hur mycket går det att slakta i denna kod?
Jag vill sätta datariktningsregistret. Tända och släcka 0x0e pin x. Inget annat. Ingen fördröjning(jag skriver en egen loop i loop). Quick and dirty.