栈中非局部数据的访问
对于那些可以在过程中声明其他过程的语言(嵌套的过程声明),非局部数据的访问会变得很复杂。
没有嵌套过程时的数据访问
C系列语言中,各个变量要么在某个函数类定义,要么在所有函数之外(全局地)定义。
对于不允许声明嵌套过程的语言而言,变量的存储分配和访问这些变量是比较简单的:
- 全局变量被分配在静态区。这些变量的位置保持不变,并且在编译时刻可知。因此要访问当前正在运行的过程的非局部变量时,我们直接使用这些静态确定的地址。
- 其他变量一定是栈顶活动的局部变量,我们可以通过运行时刻栈的top_sp指针来访问这些变量。
过程嵌套和访问链相关
(详见《编译原理》p284-p290)
(END)