app科技网站建设,什么是开放式的网站,wordpress彩色提示框,中国优秀的企业网站本章重点#xff1a; 为什么函数调用可以采用栈式存储#xff1f; 函数调用和返回过程中需要记录哪些信息#xff1f;如何记录#xff1f; 主要知识点#xff1a; 环境、状态、activation #xff08;激活#xff09; of procedures 、elaboration #xff08;确立…本章重点 为什么函数调用可以采用栈式存储 函数调用和返回过程中需要记录哪些信息如何记录
主要知识点 环境、状态、activation 激活 of procedures 、elaboration 确立 of declarations , evaluation 求值 of expressions 函数的activation tree 和函数的生命期之间的关系 活动记录 子程序非嵌套情形下的活动记录布局以C 语言为例。 嵌套声明下如何查找外层的作用域中的变量的值 忽略 一.预备知识
执行中的程序叫做进程进程包括多个procedures函数调用执行中的程序会激活相应的procedures 1.1环境和状态
环境 maps a name to a storage location
状态 maps a storage location to the value held there 总结
环境主要描述程序符号如变量和函数与它们的值、类型、作用域等的映射关系。状态反映了程序在某一时刻的实际执行情况包括所有内存值、控制流状态等。环境通常影响状态的变化而状态的变化则反映了程序的执行过程。 二.CH7
2.1Storage Organization
2.2Stack Allocation of Space
主要讲
函数的activation tree和函数的生命期之间的关系活动记录 2.2.1Activation Trees活动树
只要有一个孩子存在父亲就存在。当孩子都消失了父亲也就消失了。可用来估计procedure的生命周期。 2.2.2 Activation records活动记录
注意龙书的图栈底在上 2.2.3 c语言活动记录 另一个例子 #include stdio.h
int x, y;int main()
{x5;yf(x);
}int f(int n)
{if (n1)return 1;else if ( n2)return 2;else{int t1, t2, t3, t4, t;t1f(n-1);t2f(n-2);t3f(n-3);t4t1t2tt3t4;return t}
}