Во второй статье я обошёлся без стека: 4 подпрограммы, каждая возвращалась через свой регистр, и это работало. В конце я написал, что приём сломается, когда вызовов станет больше. Оказалось, ломать ничего не надо, достаточно, чтобы функция вызвала саму себя.
Написал рекурсию тем же способом. Программа напечатала подпись и повисла: не соврала, не упала, а именно повисла, навсегда. Вернуться ей было некуда, и починил я это за 10 минут.
А в конце статьи сломаю тот же код второй раз, уже по-другому, и вот тогда пойму, как мне повезло с первым отказом.
▍ Навигация по серии