วิธีหนึ่งคือดูรายการแอสเซมบลีของโปรแกรม
หลังจากรวบรวมโปรแกรม (ผ่านปุ่มยืนยันหรือดาวน์โหลด) ค้นหาไดเรกทอรีที่ไฟล์. cpp, .hex และ. self สำหรับโปรแกรมถูกเก็บไว้ (หากคุณมีปัญหาในการค้นหาพวกเขาสั้น ๆ เปิดตัวเลือกการรวบรวม verbose ใน arduino IDE และดูที่ชื่อไดเรกทอรีในผลลัพธ์)
ในไดเรกทอรีนั้นให้เรียกใช้avr-objdump -S
fn.cpp.elf > listing.txt
โดยที่fn.cpp.elfเป็นชื่อร่างของคุณที่.ino
ถูกนำออกและ.cpp.elf
เพิ่มในตอนท้าย ตัวอย่างเช่นภาพร่างserialecho.ino
:
avr-objdump -S serialecho.cpp.elf> listing.txt
ดูlisting.txt
ไฟล์และลบที่อยู่เริ่มต้นของแต่ละฟังก์ชันออกจากที่อยู่ปลายทางโดยใช้เลขฐานสิบหก ตัวอย่างเช่นด้วยsetup
รหัส
การตั้งค่าเป็นโมฆะ () {Serial.begin (9600); }
ในรายการเราจะเห็น
00000144 <setup>:
...(6 lines snipped)...
144: 26 e0 ldi r18, 0x06 ; 6
146: 40 e8 ldi r20, 0x80 ; 128
148: 55 e2 ldi r21, 0x25 ; 37
14a: 60 e0 ldi r22, 0x00 ; 0
14c: 70 e0 ldi r23, 0x00 ; 0
14e: 80 e1 ldi r24, 0x10 ; 16
150: 92 e0 ldi r25, 0x02 ; 2
152: db c1 rjmp .+950 ; 0x50a <_ZN14HardwareSerial5beginEmh>
00000154 <loop>:
การคำนวณ 0x154–0x144 = 0x10 แสดงส่วนนี้ของsetup
ยาว 16 ไบต์
ตัวอย่างเหล่านี้ถูกสร้างขึ้นบนระบบ linux ฉันคิดว่าวิธีการเหมือนกันในระบบ MSWindows ยกเว้นคุณอาจต้องพูดavr-objdump.exe
แทนavr-objdump
และอาจต้องระบุเส้นทางของมัน ดูเช่นผลลัพธ์ของ Assemler ที่ไหน ด้ายที่ forum.arduino.cc