我下面的疑惑是根据红龙书。
使用
d
指向激活记录的指针数组(称为display
. 我们维护显示,以便a
嵌套深度的非本地存储在i
display element 指向的激活记录中d[i]
。假设控制
p
在嵌套深度处激活过程j
。然后,j - 1
显示的第一个元素指向在词汇上包含 procedure 的过程的最近激活p
,并d[j]
指向 的激活p
。使用显示通常比跟随访问链接更快,因为保存非本地的激活记录是通过访问 d 的元素然后仅跟随一个指针来找到的。除了显示之外,维护显示的简单安排还使用访问链接。作为调用和返回序列的一部分,显示通过访问链接链更新。当
n
跟随到嵌套深度的激活记录的链接时,显示元素d[n]
被设置为指向该激活记录。实际上,显示复制了访问链接链中的信息。
上面开头的摘录(第一段和第二段的开头)说明了 adisplay
是什么以及如何初始化它。
在第二段的末尾,摘录说使用display
s 优于使用access-links
。但话又说回来了一个实现,它使用access-link
s 来维护display
值。我不太明白为什么。我们不是没有破坏我们本来可以通过使用access-links
来获得的好处维护displays
。此外,他们所说的关于这种维护的方法对我来说不是很清楚。(我的意思是步骤。)
然而,在本文后面,他们提出了一种维护display
s 的简单方法:
当为嵌套深度的过程
i
设置新的激活记录时,我们:
- 将 的值保存
d[i]
在新的激活记录中,然后- 设置
d[i]
为指向新的激活记录。就在激活结束之前,
d[i]
将重置为保存的值。
我很困惑。请帮我。