ReAl (19.12.2009 14:49, просмотров: 196) ответил ViorDash на Честно говоря не пойму какая разница в быстроте между этими командами, если я неиспользую внешнюю память. Ведь и стек тоже в RAM ложится.
В подпрограмме всегда и сразу доступен стековый кадр, а в случае единого стека, как это у avr-gcc сделано, надо в начале подпрограммы, получающей параметры через стек или имеющей на стеке локальные переменные, копировать SPH:SPL в регистровую пару. А при локальных переменных - ещё и записывать назад в SPH:SPL смещённое на их размер значение, причём при этом на не-Xmega ещё и сохранять состояние/запрещать прерывания/восстанавливать состояние, чтобы не проскочило прерывание на полу-обновлённом указателе стека. Зато при отсутствии обращений к стеку подпрограмма может свободно использовать пару Y для обычной работы. Что лучше - тяжело сказать, это надо оба подхода реализовать одним и тем же коллективом разработчиков компилятора при одном и том же их внутреннем отношении к обеим подходам.