0

我正在从 UC Berkeley 学习这门 Python 课程,并遇到了environment diagram的概念,它由与函数调用堆栈相似的框架组成(两者都是用新的函数调用创建的),但有两个很大的区别:

  • 在环境图中,当前帧中的变量可以沿着帧链(即:环境)跟踪其值,但调用堆栈中的变量(全局变量除外)只有函数范围;

  • 环境图中的每一帧都有一个父帧,它可以和调用者帧不同,而调用栈只知道它给调用者的返回地址;

我完全理解调用堆栈和相关汇编代码的机制。但是无法理解环境图模型如何在硬件上实现?

例子:

环境图

调用栈图

4

1 回答 1

0

环境图似乎不存在于伯克利课程之外。它们似乎更像是一种理论理解工具,而不是一种实现策略,而不是在计算机科学之初就因其高效特性而发明的调用堆栈。

如果您尝试实现环境图,您可能会为每个具有变量值绑定的帧维护一堆字典结构。

于 2020-07-29T11:22:51.957 回答