Редактирование: Стек возвратов
Перейти к навигации
Перейти к поиску
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.
Текущая версия | Ваш текст | ||
Строка 1: | Строка 1: | ||
'''Стек возвратов из подпрограмм''' — одна из основных структур данных | '''Стек возвратов из подпрограмм''' — одна из основных структур данных ЭКВМ. | ||
При переходе на подпрограмму, адрес команды, следующей за командой перехода, запоминается в | При переходе на подпрограмму, адрес команды, следующей за командой перехода, запоминается в стеке возвратов. При возврате из подпрограммы, последний записанный адрес из стека возврата переносится в [[счетчик адреса]]. | ||
Подпрограмма может быть вызвана из другой подпрограммы. Глубина возможных вложений определяется размером | Подпрограмма может быть вызвана из другой подпрограммы. Глубина возможных вложений определяется размером стека возвратов. В ЭВМ возможно использование до 64 уровней вложения подпрограмм. | ||
== История == | == История == | ||
В советских ПМК при полном заполнении стека возвратов из подпрограмм, а его глубина составляла всего 5 адресов, [[В/О|команда В/О]] вне подпрограммы начинала выполнять переход на адреса, зависящие от предыдущего содержимого стека возвратов (см. «Школа начинающего программиста. Занятие 26», В.А. Хмелюк, «Наука и Жизнь» №11 - 1989 г.). В ЭКВМ переход в этом случае всегда выполняется по адресу 01 текущей страницы и от предыдущего содержимого стека не зависит. Глубина стека возвратов в ЭКВМ увеличена до 64 адресов, переполнение вызывает [[аварийный останов|сообщение об ошибке]]. | |||
{{нет иллюстраций}} | {{нет иллюстраций}} | ||
[[Категория:Структуры данных ЭКВМ]] | [[Категория:Структуры данных ЭКВМ]] |