Стек возвратов: различия между версиями

Материал из ПМК вики
Перейти к навигации Перейти к поиску
(Новая страница: «'''Стек возврата из подпрограмм''' — один из основных функциональных узлов ЭКВМ. При пере…»)
 
Нет описания правки
Строка 4: Строка 4:


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

Версия от 11:46, 14 января 2014

Стек возврата из подпрограмм — один из основных функциональных узлов ЭКВМ.

При переходе на подпрограмму, адрес команды, следующей за командой перехода, запоминается в стеке возврата. При возврате из подпрограммы, последний записанный адрес из стека возврата переносится в счетчик адреса.

Подпрограмма может быть вызвана из другой подпрограммы. Глубина возможных вложений определяется размером стека возврата. В ЭВМ возможно использование до 64 уровней вложения подпрограмм.

История

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