Итак, имеем. Не сильно сложная по логике, но довольно пухлая программа на ассемблере для PIC18F45K20. В ней довольно много подпрограмм, которые друг друга могут вызывать. Никакой рекурсии не предполагается, но используются оба уровня прерываний, и в их обработчиках вложенные вызовы подпрограмм тоже имеют место быть. А стек возвратов в процессоре - не резиновый. Есть желание как-то посчитать максимальный уровень вложенности вызовов, для данного конкретного варианта сборки программы. Ручками это сделать, конечно, можно, но уж очень трудоёмко. Встроенных средств в MPLAB я что-то не нашёл. Попытка сгородить макросы типа CALL# / RETURN#, которые бы сами подсчитывали глубину вложенности вызовов, наталкивается на ряд неприятных сложностей. А переполнение стека во время исполнения чревато фейерверком в лабораторной установке. Как быть?
|