编译原理课程讲授课件.ppt

编译原理课程讲授课件.ppt

ID:52631902

大小:192.51 KB

页数:26页

时间:2020-04-12

编译原理课程讲授课件.ppt_第1页
编译原理课程讲授课件.ppt_第2页
编译原理课程讲授课件.ppt_第3页
编译原理课程讲授课件.ppt_第4页
编译原理课程讲授课件.ppt_第5页
资源描述:

《编译原理课程讲授课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、运行时环境授课:胡静本章研究问题在生成目标代码之前,需要把程序静态的正文和实现这个程序的运行时的活动联系起来,主要是存储组织与管理活动记录的建立与管理存储器的组织与存储分配策略非局部名称的访问目标程序运行时的活动过程的活动过程的活动主要讨论的是过程的静态源程序和它的目标程序在运行时的活动之间的关系过程最简单的形式是一个标识符和一段语句组成。函数是具有返回值的过程,也放入过程中进行讨论把完整的程序也看成过程过程的调用位置过程名出现在可执行语句里时过程名出现在表达式里时过程中的定义的标识符形式参数(相对应实在参数)局部变量过程的活动一个过程的活动指的是该过程的一次执行过程P一个活动的生存期,指

2、的是从执行该过程体第一步操作到左后一步操作之间的操作序列,也包括执行P时调用其他程序花费的时间每次控制从过程P进入过程Q后,如果没有错误,最后都要返回到过程P。如果a和b都是过程的活动,那么它们的生存期或者是不重叠,或者是嵌套的。如果一个过程是递归的(直接递归或间接递归),在某一时刻可能有几个活动记录活跃着运行时存储器的划分存储组织产生的目标代码长度在编译时可以确定放在静态区域,内存的低地址区目标代码静态数据栈堆静态数据某些数据的长度在编译时可知放在静态区域,其地址可以编译到目标代码中拓广的控制栈栈保存程序的断点需要保存的各种状态堆用来保存那些不能用活动树表示的语言的实现过程中产生的活动信

3、息。活动记录活动记录的定义过程一次执行所需要的信息用一块连续的存储区来管理,这块存储区叫做活动记录在过程调用时将活动记录压入栈,在控制返回调用者时把活动记录弹出返回值实参可选的控制链可选的访问链保存的机器状态局部数据临时数据活动记录各部分信息临时数据域:计算表达式时出现的那些值局部数据域:保存局部于过程执行的数据机器状态域:保存过程调用前的机器状态信息,包括程序计数器的值和寄存器的值可选的访问链:引用存于其它活动记录中的非局部变量(静态链)可选的控制链:用来指向调用者的活动记录(动态链)实在参数域:用于存放调用过程提供给被调用那个过程的参数返回值域:用于存放被调用返回给调用过程的值返回值实

4、参可选的控制链可选的访问链保存的机器状态局部数据临时数据存储分配策略存储分配的三种策略静态分配策略在编译时为所有数据对象分配固定的存储单元,且在运行时始终保持不变栈式动态分配策略在运行时按栈方式管理运行时的存储空间堆式动态分配策略在运行时根据需要从堆数据区域分配和释放存储空间代码静态数据栈堆存储分配策略静态存储分配在静态分配中,名字在程序编译时与存储单元绑定,所以不需要运行时支撑程序包。因为运行时不改变绑定,所以每次过程活动时,它的名字都绑定到同样的存储单元。这种性质允许局部名字的值在过程停止活动后仍然保持,即当控制再次进入过程时,局部名字的值同控制上一次离开时一样。因为静态分配,所以编译

5、时在目标代码中能填上所有操作的数据对象的地址静态分配的局限性数据对象的长度和它在内存中的位置的约束在编译时必须知道不允许递归过程,因为一个过程的所有活动使用同样的局部名字绑定数据结构不能动态建立,因为没有运行时的存储分配机制。栈式存储分配栈式存储分配的思想(基于控制栈)把存储空间组织为栈,而且随着过程活动的开始和结束将活动记录进栈和出栈过程每次调用时,局部量的存储空间包含在该次调用的活动记录中。每次调用都引起新的活动记录进栈,每次活动时局部量都绑到新的存储单元活动记录弹出栈时局部量的存储空间将被释放,所以活动结束时局部量的值被删除。栈式存储分配调用序列:过程调用是通过在目标代码中生成调用序

6、列来实现调用序列分配活动记录,并把信息填入它的域中返回序列恢复机器状态,使调用过程能继续执行。调用序列的代码常常分成两部分,分别处于调用过程和被调用过程中。有助于设计调用序列和活动记录的一个原则是,长度能较早确定的域放在活动记录的中间。栈式存储分配在活动记录中,控制链、访问链和机器状态域出现在中间。临时数据域的长度可以在编译时最终确定,但就前端而言,这个域的大小也可能是未知的。临时数据放在局部数据域后面,它的长度的改变不会影响数据对象相对于中间那些域的位置。返回值和实参放在活动记录的最开始。方便调用者和被调用者之间的数据交换。返回值实参可选的控制链可选的访问链保存的机器状态局部数据临时数据

7、栈式存储分配寄存器top_sp指向活动记录中机器状态域的末端,在控制转移到被调用过程之前用它来置top_sp的值,其调用序列是:调用者计算实参调用者把返回地址和top_sp的旧值存入被调用者的活动记录中被调用者保持寄存器值和其他机器状态信息被调用者初始化其局部数据,并开始执行……参数和返回值链和保存的状态临时变量和局部数据参数和返回值临时变量和局部数据控制链链和保存的状态控制链top_sp调用者的活动记录被调用者的活动记

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。