|
В переводе на русский - Последний пришел - первый вышел. Пример из жизни - поездка в переполненном тролейбусе или стопка тарелок. Люди обычно для использованиф берут из стопки первую тарелку сверху, и кладут на стопку терелку также сверху после того как ей попользовались. Если тарелки все взяты и их больше нет, а требуется еще, то говорят о переполнении стека.
Применительно к памяти можно сказать, что при обращении к стеку считывается содержимое ячейки на вершине стека (берется тарелка сверху стопки) и указатель стека изменяется так, чтобы он указывал на очередную ячейку. При записи в стек, указатель изменяется так чтобы он адресовался к новой ячейке и потом туда записывается данные (ставится на стопку новая тарелка).
В AVR (и во многих других процессорах) при записи в стек указатель стека уменьшается (растет вниз), а при чтении из стека увеличивается. Поэтому при инициализации стека указатель устанавливается на ПОСЛЕДНИЙ адрес ОЗУ.
Для чего стек нужен? Он используется во многих случаях. В данном случае его основное назнаначение - хранение адреса возврата из подпрограммы. При обращении к подпрограмме (команды call, icall, rcall а также по прерываниям) текущи адрес счетчика команд сохраняется в стеке автоматически, и восстанавливается из стека также автоматически по командам ret и reti. Использование механизма стека особенно удобно при организации вложенных вызовов подпрограмм.
E-mail: info@telesys.ru