Compiler construction 简单安排;“显示”;使用访问链接
我下面的怀疑是基于红龙书 使用指向激活记录的指针数组Compiler construction 简单安排;“显示”;使用访问链接,compiler-construction,runtime-environment,activation-record,Compiler Construction,Runtime Environment,Activation Record,我下面的怀疑是基于红龙书 使用指向激活记录的指针数组d(称为display)可以比使用访问链接更快地访问非本地数据。我们维护显示,以便嵌套深度i的非本地a存储在显示元素d[i]指向的激活记录中 假设控件在嵌套深度j处激活过程p。然后,显示的第一个j-1元素指向在词汇上包含过程p的过程的最新激活,d[j]指向p的激活使用显示通常比使用访问链接更快,因为保存非本地的激活记录是通过访问d元素,然后只跟随一个指针找到的。 维护显示器的简单安排除了使用显示器外,还使用访问链接。作为呼叫和返回序列的一部分,
d
(称为display
)可以比使用访问链接更快地访问非本地数据。我们维护显示,以便嵌套深度i
的非本地a
存储在显示元素d[i]
指向的激活记录中
假设控件在嵌套深度j
处激活过程p
。然后,显示的第一个j-1
元素指向在词汇上包含过程p
的过程的最新激活,d[j]
指向p
的激活使用显示通常比使用访问链接更快,因为保存非本地的激活记录是通过访问d元素,然后只跟随一个指针找到的。
维护显示器的简单安排除了使用显示器外,还使用访问链接。作为呼叫和返回序列的一部分,显示通过访问链接链进行更新。当在嵌套深度n
处链接到激活记录时,显示元素d[n]
被设置为指向该激活记录。实际上,显示会复制访问链接链中的信息
上面开头的摘录(第一段和第二段开头)说明了什么是显示以及如何初始化它
在第二段末尾,摘录说使用display
s比使用访问链接
更有利。但是它又提到了一个实现,它使用访问链接
s来维护显示
值。我不太明白为什么。使用访问链接
来维护显示
,难道我们没有破坏我们本来可以获得的好处吗。此外,他们所说的维护方法对我来说也不太清楚。(我指的是步骤。)
但是,在本文后面,他们提出了一种维护显示的简单方法:
当在嵌套深度i
设置程序的新激活记录时,我们:
将d[i]
的值保存在新的激活记录中,然后
将d[i]
设置为指向新激活记录
就在激活结束之前,d[i]
被重置为保存的值
我很困惑。请帮帮我