电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

《编译原理课程教案》第6章:运行时存储分配VIP免费

《编译原理课程教案》第6章:运行时存储分配_第1页
1/20
《编译原理课程教案》第6章:运行时存储分配_第2页
2/20
《编译原理课程教案》第6章:运行时存储分配_第3页
3/20
运行时存储空间的组织第六章本章要求•主要内容:程序的静态文本与它运行时的活动之间的关系,源程序运行时各种对象的存储空间主要有三种方式分配方式:静态存储分配、栈式存储分配和堆式存储分配•重点掌握:源程序运行时的活动,参数传递方式,程序中名字的作用域,局部数据区的内容,存储空间的分配方式6.1程序执行时的活动•静态和动态的联系–名字和数据对象–数据对象的动态表示–名字的作用域–数据对象的存储分配–过程和活动–参数处理•运行时支撑程序包过程相关的几个概念•过程定义是一个声明,它的最简单的形式是把一个标识符(过程的名字)和一段语句联系起来。•当过程名出现在可执行语句中时,则称过程在该点被调用•出现在过程定义中的标识符称为形式参数(或形参)•出现在过程调用中的标识符或常数称为实在参数(或实参)•一个过程的一次执行指的是从过程体的起点开始,最后退出该过程,将控制返回到该过程被调用之后的位置。•一个过程的活动指的是该过程的一次执行。就是说,每次执行一个过程体就产生该过程的一个活动。•从执行该过程体的第一步操作到最后一步操作之间的操作序列所花的时间称为该过程的一个活动的生存期声明的作用域•语言中名字的声明是把信息与名字联系起来的语法结构。•区分同名程序声明:最接近的嵌套规则inta,b;int*p;intfoo(inta){intb,c;char*p;p=malloc(sizeof(char));b=foo(1);…}•作用域:一个声明起作用的程序部分称为该声明的作用域•局部和非局部:过程中名字的出现,如果是在该过程的一个声明的作用域内,则这个出现称为局部于该过程参数的传递•传地址(常用):把实在参数的地址传递给相应的形式参数•传值(常用):调用段把实在参数的值传给被调用段。被调用段把实参值抄进形式单元中,再使用。•得结果:形式参数对应有两个单元,第一个单元放实参的地址,第二个单元放实参的值。对形式参数的任何引用或赋值都看成是对第二个单元的直接访问,过程返回前必须把第二个单元的内容存放到第一个单元所指的那个实参单元之中•传名:(ALGOL60)过程调用相当于把被调过程的过程体抄到调用出现的位置,把其中任一出现的形式参数都替换成相应的实在参数(文字替换)名字的绑定静态概念动态概念过程的定义名字的声明声明的作用域过程的活动名字的绑定绑定的生命期•程序中声明的名字和动态数据对象的关系–数据对象是保存值的存储单元–一个名字可能代表不同的数据对象•环境:表示将名字映射到存储单元(即名字的左值)的函数•状态:表示将存储单元映射到它所保存的值(即名字的右值)的函数•赋值操作只改变状态,但不改变环境•结合:如果环境把存储单元s联系到名字x,则称x绑定到s,这个联系本身称为x的绑定名字绑定要考虑的问题•过程是否递归•当控制从过程的活动返回时,局部名字的值是否要保留•过程能否引用非局部的名字•过程调用时参数是如何传递的•过程是否可以作为参数被传递•过程能否作为结果值返回•存储区能否在程序控制下动态地分配•存储区是否必须显式地释放6.2运行时内存的划分•程序运行时如何使用内存:–目标代码的存放•目标代码可以存放在静态确定的区域,其长度在编译时即可确定–数据对象•可静态分配的数据对象,其地址可以编译到目标代码中•动态分配–控制栈:记录过程活动–堆:可以存放动态分配的数据等,但开销要比栈大过程1的目标代码代码区过程2的目标代码……过程n的目标代码全局变量和静态变量静态数据栈自由空间堆动态数据局部数据区的内容•活动记录:过程的依次执行所需要的信息用一块连续的存储区来管理,这块存储区叫做活动记录或帧•并不是所有的语言或编译器都是如此•寄存器的使用•活动记录的操作:–过程被调用时入栈–过程返回时出栈返回值实在参数可选的控制链可选的访问链保存的机器状态局部数据临时数据一般的活动记录活动记录的各个域的作用•临时数据:临时变量的存储等•局部数据:局部于过程执行的数据•机器状态:保存过程调用前的机器状态信息–返回地址•可选的访问链:用于非局部数据的访问•可选的控制链:指向调用者的活动记录•实在参数域:参数个数较少时...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

《编译原理课程教案》第6章:运行时存储分配

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部