Почему вершина стека устанавливается на текущее значение «EP минус один», а не «EP» после возврата из подпрограммы? - PullRequest
0 голосов
/ 04 октября 2019

Я читаю книгу "Концепции языков программирования" Роберта В. Себесты, глава 10. Подпрограмма. И я не понимаю, почему вершина стека установлена ​​на текущее значение EP минус один после возврата из подпрограммы.

Вот предложение, которое я не понимаю.

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

Я понимаю, что

  1. EP всегда указывает базу текущего экземпляра записи активации.
  2. При вызове подпрограммы текущее значение EP сохраняется в динамическом соединении в новом экземпляре записи активации.
  3. Затем,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 минус один, вершина стека должна указывать на вершину параметра, а не на вершину функционального значения. Но вершина стека указывает на вершину значения функции.

Пожалуйста, помогите мне, что мне не хватает.

...