Автор разработал собственный ассемблер, чтобы разобраться, откуда в дизассемблере появляется последовательность ff010113. Заодно он подсчитал, какая доля строк его программы не может быть исполнена процессором, и проверил вывод на четырёх наборах команд, включая живой ESP32 на столе. На кристалле первая программа серии дала сбой: она пишет в UART быстрее, чем провод успевает передавать данные, а в эмуляторе этого не проявилось.
По словам автора, дизассемблер «выдумывает» почти половину его кода — отсюда и загадочные байты. Сравнение эмулятора с реальным чипом показало, что модель железа и программная среда могут расходиться в деталях, которые не видны при отладке только на симуляторе.
Тем, кто пишет низкоуровневый код под микроконтроллеры, стоит помнить: проверка на живом устройстве остаётся обязательной. Особенно это касается периферии вроде UART, где скорость передачи ограничена физикой, а не только логикой программы.
