Почему для вершины стека установлено текущее значение "EP минус один", а не "EP" после возврата из подпрограммы?
Я читаю книгу Роберта В. Себесты "Концепции языков программирования", глава 10. Подпрограмма. И я не понимаю, почему вершина стека установлена на текущее значение EP минус один после возврата из подпрограммы.
Вот предложение, которое я не понимаю.
"По возвращении из подпрограммы вершина стека устанавливается на значение текущего EP минус один, а EP устанавливается на динамическую ссылку из экземпляра записи активации подпрограммы, которая завершила свое выполнение".
Я это понимаю
- EP всегда указывает на базу текущего экземпляра записи активации.
- При вызове подпрограммы текущее значение EP сохраняется в динамической ссылке в новом экземпляре записи активации.
- Затем EP устанавливается как основание для нового экземпляра записи активации.
И после возврата из подпрограммы я думал, что вершина стека установлена на текущее значение EP. Но в книге говорится, что вершина стека установлена на текущее значение EP минус один.
почему ЕР минус один, а не ЕР?
Вот изображение из книги "Концепции языков программирования Роберта В. Себесты"
В качестве 4-го изображения я думаю, что если для вершины стека установлено текущее значение EP минус один, верх стека должен указывать на вершину параметра, а не на вершину функционального значения. Но вершина стека указывает на вершину значения функции.
Пожалуйста, помогите мне понять, что мне не хватает.