Bir yaklaşım, programın derleme listesine bakmaktır.
Programı derledikten sonra (Doğrula veya İndir düğmesiyle) programın .cpp, .hex ve .elf dosyalarının saklandığı dizini bulun. (Bunları bulmakta sorun yaşıyorsanız, arduino IDE'deki ayrıntılı derleme seçeneklerini kısaca açın ve çıktıdaki dizin adlarına bakın.)
Bu dizinde, avr-objdump -S fn.cpp.elf komutunu çalıştırın ;> listing.txt burada fn.cpp.elf , çiziminizin sonuna .inoalınan ve .cpp.elfsonuna eklenecek olan adıdır . Örneğin, çizim ile serialecho.ino:
avr-objdump -S serialecho.cpp.elf> liste.txt
listing.txtDosyayı görüntüleyin ve onaltılık aritmetik kullanarak her işlevin başlangıç adresini bitiş adresinden çıkarın. Örneğin, setupkod ile
void setup () {Serial.begin (9600); }
listede göreceğiz
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 hesaplaması, bu bölümün setup16 bayt uzunluğunda olduğunu gösterir.
Bu örnekler bir linux sistemi üzerinde üretilmiştir. Bir MSWindows sisteminde yaklaşımın aynı olduğunu düşünüyorum, avr-objdump.exebunun yerine söylemeniz avr-objdumpgerekebilir ve yolunu belirtmeniz gerekebilir. Örneğin, Assemler sonuçlarına bakın, nerede? forum.arduino.cc adresindeki iş parçacığı.