Я читаю книгу "Концепции языков программирования" Роберта В. Себесты, глава 10. Подпрограмма. И я не понимаю, почему вершина стека установлена на текущее значение EP минус один после возврата из подпрограммы.
Вот предложение, которое я не понимаю.
"По возвращении из подпрограммыверх вершины стека устанавливается равным значению текущего EP минус один, а EP устанавливается на динамическое соединение из экземпляра записи активации подпрограммы, которая завершила свое выполнение. "
Я понимаю, что
- EP всегда указывает базу текущего экземпляра записи активации.
- При вызове подпрограммы текущее значение EP сохраняется в динамическом соединении в новом экземпляре записи активации.
- Затем,EP установлен в качестве основы для нового экземпляра записи активации.
И после возврата из подпрограммы я подумал, что вершина стека установлена на текущее значение EP. Но книга говорит, что вершина стека установлена на текущее значение EP минус один.
почему EP минус один, а не EP?
Вот изображение из книги "Robert W. Sebesta Concepts of Programming Languages"
https://imgur.com/cTHLUJx
https://imgur.com/Gk2rE2t
https://imgur.com/2RFebgT
https://imgur.com/fxnfDaj
Как 4-е изображение, яПодумайте, если вершина стека установлена на текущее значение EP минус один, вершина стека должна указывать на вершину параметра, а не на вершину функционального значения. Но вершина стека указывает на вершину значения функции.
Пожалуйста, помогите мне, что мне не хватает.