0

我下面的疑惑是根据红龙书。

使用d指向激活记录的指针数组(称为display. 我们维护显示,以便a嵌套深度的非本地存储在idisplay element 指向的激活记录中d[i]

假设控制p在嵌套深度处激活过程j。然后,j - 1显示的第一个元素指向在词汇上包含 procedure 的过程的最近激活p,并d[j]指向 的激活p使用显示通常比跟随访问链接更快,因为保存非本地的激活记录是通过访问 d 的元素然后仅跟随一个指针来找到的。

除了显示之外,维护显示的简单安排还使用访问链接。作为调用和返回序列的一部分,显示通过访问链接链更新。n跟随到嵌套深度的激活记录的链接时,显示元素d[n]被设置为指向该激活记录。实际上,显示复制了访问链接链中的信息。

上面开头的摘录(第一段和第二段的开头)说明了 adisplay是什么以及如何初始化它。

在第二段的末尾,摘录说使用displays 优于使用access-links。但话又说回来了一个实现,它使用access-links 来维护display值。我不太明白为什么。我们不是没有破坏我们本来可以通过使用access-links来获得的好处维护displays。此外,他们所说的关于这种维护的方法对我来说不是很清楚。(我的意思是步骤。)

然而,在本文后面,他们提出了一种维护displays 的简单方法:

当为嵌套深度的过程i设置新的激活记录时,我们:

  1. 将 的值保存d[i]在新的激活记录中,然后
  2. 设置d[i]为指向新的激活记录。

就在激活结束之前,d[i]将重置为保存的值。

我很困惑。请帮我。

4

0 回答 0