最新编译原理课程讲授课件教学讲义ppt课件.ppt

最新编译原理课程讲授课件教学讲义ppt课件.ppt

ID:62178485

大小:822.50 KB

页数:58页

时间:2021-04-20

最新编译原理课程讲授课件教学讲义ppt课件.ppt_第1页
最新编译原理课程讲授课件教学讲义ppt课件.ppt_第2页
最新编译原理课程讲授课件教学讲义ppt课件.ppt_第3页
最新编译原理课程讲授课件教学讲义ppt课件.ppt_第4页
最新编译原理课程讲授课件教学讲义ppt课件.ppt_第5页
资源描述:

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

1、编译原理课程讲授课件本章研究问题在生成目标代码之前,需要把程序静态的正文和实现这个程序的运行时的活动联系起来,主要是存储组织与管理活动记录的建立与管理存储器的组织与存储分配策略非局部名称的访问目标程序运行时的活动存储组织产生的目标代码长度在编译时可以确定放在静态区域,内存的低地址区目标代码静态数据栈堆静态数据某些数据的长度在编译时可知放在静态区域,其地址可以编译到目标代码中拓广的控制栈栈保存程序的断点需要保存的各种状态堆用来保存那些不能用活动树表示的语言的实现过程中产生的活动信息。活动记录活动记录的定义

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

3、个过程的参数返回值域:用于存放被调用返回给调用过程的值返回值实参可选的控制链可选的访问链保存的机器状态局部数据临时数据存储分配策略存储分配的三种策略静态分配策略在编译时为所有数据对象分配固定的存储单元,且在运行时始终保持不变栈式动态分配策略在运行时按栈方式管理运行时的存储空间堆式动态分配策略在运行时根据需要从堆数据区域分配和释放存储空间代码静态数据栈堆存储分配策略静态存储分配在静态分配中,名字在程序编译时与存储单元绑定,所以不需要运行时支撑程序包。因为运行时不改变绑定,所以每次过程活动时,它的名字都绑定

4、到同样的存储单元。这种性质允许局部名字的值在过程停止活动后仍然保持,即当控制再次进入过程时,局部名字的值同控制上一次离开时一样。因为静态分配,所以编译时在目标代码中能填上所有操作的数据对象的地址静态分配的局限性数据对象的长度和它在内存中的位置的约束在编译时必须知道不允许递归过程,因为一个过程的所有活动使用同样的局部名字绑定数据结构不能动态建立,因为没有运行时的存储分配机制。栈式存储分配栈式存储分配的思想(基于控制栈)把存储空间组织为栈,而且随着过程活动的开始和结束将活动记录进栈和出栈过程每次调用时,局部

5、量的存储空间包含在该次调用的活动记录中。每次调用都引起新的活动记录进栈,每次活动时局部量都绑到新的存储单元活动记录弹出栈时局部量的存储空间将被释放,所以活动结束时局部量的值被删除。栈式存储分配调用序列:过程调用是通过在目标代码中生成调用序列来实现调用序列分配活动记录,并把信息填入它的域中返回序列恢复机器状态,使调用过程能继续执行。调用序列的代码常常分成两部分,分别处于调用过程和被调用过程中。有助于设计调用序列和活动记录的一个原则是,长度能较早确定的域放在活动记录的中间。栈式存储分配在活动记录中,控制链、

6、访问链和机器状态域出现在中间。临时数据域的长度可以在编译时最终确定,但就前端而言,这个域的大小也可能是未知的。临时数据放在局部数据域后面,它的长度的改变不会影响数据对象相对于中间那些域的位置。返回值和实参放在活动记录的最开始。方便调用者和被调用者之间的数据交换。返回值实参可选的控制链可选的访问链保存的机器状态局部数据临时数据栈式存储分配寄存器top_sp指向活动记录中机器状态域的末端,在控制转移到被调用过程之前用它来置top_sp的值,其调用序列是:调用者计算实参调用者把返回地址和top_sp的旧值存入

7、被调用者的活动记录中被调用者保持寄存器值和其他机器状态信息被调用者初始化其局部数据,并开始执行……参数和返回值链和保存的状态临时变量和局部数据参数和返回值临时变量和局部数据控制链链和保存的状态控制链top_sp调用者的活动记录被调用者的活动记录调用者的任务被调用者的任务堆式存储分配栈式存储分配策略在下列情况下不能使用:活动结束时必须保持局部名字的值被调用者的活动比调用者的活动的生存期长。堆式存储器的策略:(堆管理器管理堆空间)把连续存储区域分成块,当活动记录或其他对象需要时就分配。块的释放可以按任意次序

8、进行,所以经过一段时间后,堆可能包含交错的正在使用的和已经释放的区域堆管理器的效率问题堆管理的效率问题是数据结构理论中的特殊问题对每个感兴趣的活动记录的大小,保存一个相应大小的空闲块的链表可能的话,为大小为s的请求分配一个大小为s’的块,其中s’是大小等于s的最小块。当该块最终被释放后,将其链回原来的空闲块链表对于大块存储空间,使用堆管理器管理。其具体管理方法可以参考操作系统中堆内存的管理方法。对非局部名字的访问语言的作用域规则确定了如何处

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

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

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