आप avr-objdump -d का उपयोग कर सकते हैं। यह देखने के लिए कि क्या उत्पन्न हो रहा है:
आइए इसका थोड़ा विश्लेषण करें:
[jpc@jpc ~] avr-objdump -d avr.elf | sed -e 's/^/ /' | pbcopy
avr.elf: file format elf32-avr
Disassembly of section .text:
00000000 <__vectors>:
0: 09 c0 rjmp .+18 ; 0x14 <__ctors_end>
2: 0e c0 rjmp .+28 ; 0x20 <__bad_interrupt>
4: 0d c0 rjmp .+26 ; 0x20 <__bad_interrupt>
6: 0c c0 rjmp .+24 ; 0x20 <__bad_interrupt>
8: 0b c0 rjmp .+22 ; 0x20 <__bad_interrupt>
a: 0a c0 rjmp .+20 ; 0x20 <__bad_interrupt>
c: 09 c0 rjmp .+18 ; 0x20 <__bad_interrupt>
e: 08 c0 rjmp .+16 ; 0x20 <__bad_interrupt>
10: 07 c0 rjmp .+14 ; 0x20 <__bad_interrupt>
12: 06 c0 rjmp .+12 ; 0x20 <__bad_interrupt>
20 बाइट्स वेक्टर टेबल को बाधित करते हैं (यदि आपने जोर दिया और कम से कम कुछ प्रविष्टियों को छोड़ा जा सकता है और वादा किया है कि आप कभी भी संबंधित इंटरप्ट को सक्षम नहीं करेंगे)।
00000014 <__ctors_end>:
14: 11 24 eor r1, r1
16: 1f be out 0x3f, r1 ; 63
18: cf e9 ldi r28, 0x9F ; 159
1a: cd bf out 0x3d, r28 ; 61
1c: 02 d0 rcall .+4 ; 0x22 <main>
1e: 05 c0 rjmp .+10 ; 0x2a <_exit>
क्लियर SREG (मुझे यकीन नहीं है कि यह वास्तव में आवश्यक है), SPL (स्टैक पॉइंटर) को 0x9f (RAMEND) लिखता है और मुख्य रूप से कूदता है। अंतिम आरजेएम एक प्रकार का निरर्थक है। (आप मुख्य से वापस कभी नहीं आने का वादा कर सकते हैं)
00000020 <__bad_interrupt>:
20: ef cf rjmp .-34 ; 0x0 <__vectors>
उन लोगों के लिए डिफ़ॉल्ट रुकावट की प्रक्रिया सी में एक ओवरराइट नहीं की गई है (__vectors के समान नियम)
00000022 <main>:
22: bb 9a sbi 0x17, 3 ; 23
24: c3 9a sbi 0x18, 3 ; 24
26: c3 98 cbi 0x18, 3 ; 24
28: fd cf rjmp .-6 ; 0x24 <main+0x2>
आपकी मुख्य खरीद तंग।
0000002a <_exit>:
2a: f8 94 cli
0000002c <__stop_program>:
2c: ff cf rjmp .-2 ; 0x2c <__stop_program>
यह दो बहुत उपयोगी नहीं हैं। _exit को संभवतः C मानक द्वारा आवश्यक है और __stop_program के लिए आवश्यक है कि वह इसे काम करे।