Частина 3 - Дебагування Hello World

Сьогодні ми потрапимо до дебагування нашого дуже простого програми "Hello world!".

Давайте переглянемо наш код.

Певні дії необхідно виконувати перед кожним уроком.

Перевірте, чи ваша версія програми відповідає останній.

У моїй ситуації воно буде відрізнятися від вашої.

Тепер поверніться до нашого проекту. Давайте запустимо наш дебагер.

Давайте зробимо аналіз автоматично.

Давайте спробуємо потрапити до головної частини програми.

Давайте перейдемо до візуального режиму, натиснувши V і потім p двічі, щоб потрапити до хорошого режиму дебагування.

Давайте розіб'ємо цю дуже просту програму.

Ми просто встановлюємо аргументи нашої функції, де ми відправляємо значення r4 і lr (регистр зв'язку) на стік.

Далі ми здійснюємо перехід до функції sym.stdi (ініціалізує стандартний вхід і вихід).

Далі ми завантажуємо значення в місці 0x00000338 в регистр r4. Це місце, де знаходиться рядок "Hello world!".

Щоб підтвердити це, можна виконати наступні дії, натиснувши: всередині поточного візуального режиму і потім натиснувши наступні команди.

Як ви можете побачити, значення всередині 0x00000338 є тим же, що і значення в місці 0x0004cf8.

Далі ми переміщаємо і встановлюємо флаги (тобто s в movs) вміст r4 в r0.

Далі ми здійснюємо перехід до обгортки puts. Дебагер перетворив нашу функцію printf в нашому коді на цю обгорткову функцію.

Далі ми здійснюємо movs 250 (десяткове), 0xfa (шестнадцяткове), яке є 1/4 нашим 1000 мілісекундним сповільненням в r0.

Далі логічно зміщуємо вліво на 2 і встановлюємо флаги. Це, звичайно, збільшує наше значення 250 на 2 і знову на 2, що робить 250 на 1000, яке є нашим мілісекундним затримкою, і розміщує це значення 1000 в r0.

Якщо ви незнайомі з ARM інструкціями 32-розрядної збірки, зверніться до цієї чудової таблиці, яку надала Keil.

Далі ми здійснюємо перехід до нашої функції sleep_ms.

Далі ми здійснюємо умовний перехід до 0x328, яке є нашою циклічною конструкцією.

Також ви можете побачити графічний режим, натиснувши V знову в поточному вікні.

Це чудовий спосіб слідкувати за більш складним кодом. Я хотів показати вам це, оскільки ви зможете використовувати це далі, коли виконуватимете більші аналіз.

У наступному урокі ми змінимо нашу просту програму і перетворимо її знову на .uf2 і знову перезавантажимо на Pico.

results matching ""

    No results matching ""