Простейший вариант - смотрите в map, где у вас вершина каждого стека. И где-нибудь в __low_level_init() заполняете память с обоими стеками 0xFF.
Потом в любом месте программы смотрите, где у вас "верхний" FF в каждом стеке - это и будет максимально используемый объем стека.
Примерно так (границы свои поставьте):
Код
extern "C" {
char __low_level_init()
{
/* для определения реально используемого объема стека */
for(byte *p = (byte*)0x250; p>(byte*)0x104; --p)
*p = 0xff;
for(byte *p = (byte*)0x300; p>(byte*)0x254; --p)
*p = 0xff;
return 1;
}
}
Кстати, грубую оценку (обычно с большим запасом) ИАР дает в map-файле (call-graph)