Một cách tiếp cận là xem xét danh sách lắp ráp của chương trình.
Sau khi biên dịch chương trình (thông qua nút Xác minh hoặc Tải xuống), hãy tìm thư mục chứa các tệp .cpp, .hex và .elf cho chương trình đã được lưu trữ. (Nếu bạn gặp khó khăn khi tìm thấy chúng, hãy bật nhanh các tùy chọn biên dịch dài dòng trong IDE arduino và xem tên thư mục trong đầu ra.)
Trong thư mục đó, hãy chạy avr-objdump -S
fn.cpp.elf > listing.txt
trong đó fn.cpp.elf là tên của bản phác thảo của bạn đã .ino
được gỡ bỏ và .cpp.elf
thêm vào cuối. Ví dụ: với bản phác thảo serialecho.ino
:
avr-objdump -S serialecho.cpp.elf> list.txt
Xem listing.txt
tệp và trừ địa chỉ bắt đầu của từng hàm khỏi địa chỉ kết thúc của nó, sử dụng số học hex. Ví dụ: với setup
mã
void setup () {serial.begin (9600); }
trong danh sách chúng ta sẽ thấy
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>:
Phép tính 0x154 Lỗi0x144 = 0x10 cho thấy phần setup
này dài 16 byte.
Những ví dụ này được tạo ra trên một hệ thống linux. Tôi nghĩ rằng cách tiếp cận này giống nhau trên hệ thống MSWindows ngoại trừ bạn có thể cần phải nói avr-objdump.exe
thay vì avr-objdump
và có thể cần chỉ định đường dẫn của nó. Xem, ví dụ, kết quả Trình biên dịch, ở đâu? chủ đề tại forum.arduino.cc.