আপনি আওয়ার-অজডাম্প-ডি ব্যবহার করতে পারেন elf
আসুন এটি একটু বিশ্লেষণ করুন:
[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>
ক্লিয়ার এসআরজি (আমি নিশ্চিত এটির সত্যতা প্রয়োজন কিনা), এসপিএলকে (0 স্ট্যাক পয়েন্টার) 0x9f (র্যাম্যান্ড) লিখে মূল দিকে লাফিয়ে যায়। শেষ rjmp এক ধরণের অপ্রয়োজনীয়। (আপনি প্রতিশ্রুতি দিতে পারেন কখনই মূল থেকে ফিরে আসবেন না)
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>
এই দুটি খুব দরকারী নয়। _ এক্সিট সম্ভবত সি স্ট্যান্ডার্ড দ্বারা প্রয়োজন এবং এটির মতো কাজ করার জন্য __স্টপ_প্রগ্রাম প্রয়োজন।