Стек возвратов
Стек возвратов из подпрограмм — одна из основных структур данных ЭКВМ.
При переходе на подпрограмму, адрес команды, следующей за командой перехода, запоминается в стеке возвратов. При возврате из подпрограммы, последний записанный адрес из стека возврата переносится в счетчик адреса.
Подпрограмма может быть вызвана из другой подпрограммы. Глубина возможных вложений определяется размером стека возвратов. В ЭКВМ возможно использование до 64 уровней вложения подпрограмм.
История[править]
Стек был изобретён в 1946’ом году Аланом Тьюрингом. Изобретение стека позволило аппаратно реализовать вложенные подпрограммы и возврат из них. Сам термин стек (англ. stack) появился позднее и приписывается Эдсгеру Дейкстре.
В советских ПМК при полном заполнении стека возвратов из подпрограмм, а его глубина составляла всего 5 адресов, команда В/О вне подпрограммы начинала выполнять переход на адреса, зависящие от предыдущего содержимого стека возвратов (см. «Школа начинающего программиста. Занятие 26», В.А. Хмелюк, «Наука и жизнь» №11 - 1989 г.). В ЭКВМ переход в этом случае всегда выполняется по адресу 01 текущей страницы и от предыдущего содержимого стека не зависит. Глубина стека возвратов в ЭКВМ увеличена до 64 адресов, переполнение вызывает сообщение об ошибке.
Ссылки[править]
- Стек на Википедии
- Подпрограмма и стек вызовов на Википедии
- Stack на The Jargon File (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |