Один із підходів полягає в тому, щоб переглянути перелік складання програми.
Після компіляції програми (за допомогою кнопки Підтвердити або Завантажити) знайдіть каталог, де зберігаються файли .cpp, .hex та .elf для програми. (Якщо у вас виникли проблеми з їх пошуком, коротко увімкніть параметри детальної компіляції в IDE arduino та перегляньте назви каталогів у висновку.)
У цьому каталозі запустіть 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.