Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Compiler construction 简单安排;“显示”;使用访问链接_Compiler Construction_Runtime Environment_Activation Record - Fatal编程技术网

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]
    被重置为保存的值

    我很困惑。请帮帮我