- 1、本文档共44页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章 运行环境 (Run-Time Enviroments) 主要内容 绑定(Binding) 存储(Storage)组织(Organization)与分配(Allocation) 参数(Parameter)传递(Passing) 过程说明与调用 符号表(Symbol Table)管理 8.1 绑定(Binding) Binding的概念 将符号名和相应目标数据(的地址)对应起来 标识符与数据目标的对应 变量名──数据存储单元地址 过程名、函数名──程序段入口地址 相关问题 变量和过程的作用域,决定绑定的有效期 绑定的时机与策略 语言定义的标识符的生存期决定最终绑定的时机 全局变量:全程有效——程序装入时 局部变量:分段有效——进入过程或分程序时 变量名的绑定 静态(Static)绑定:编译时指定(相对地址) 词法分析期间——在符号表中建立变量的表项 回忆:说明语句的语义分析:字节数计算,填写变量地址 动态(Dynamic)绑定:运行时指定(具体地址/相对地址) 如:动态数组 过程/函数名的绑定 为过程指定程序代码段入口地址 静态绑定:编译时指定相对地址 (词法分析:在符号表中建立过程的表项) 语义分析:构造目标代码,填写过程的入口地址 如:一般的函数、子例程 动态绑定 运行时指定——函数名作为形式参数(formals) 如:函数指针、虚函数(C++) 8.2 存储组织与分配(P257) 主要内容 运行时刻的内存划分(Partition) 局部数据的静态分配(Static Allocation) 局部数据的动态分配(Dynamic Allocation) 层次单元法 栈式(Stack)存储分配策略 堆式(Heap)存储分配策略 运行时刻的内存划分 静态存储分配 特点 编译时刻确定存储位置 访问效率高 主要用途 子程序的目标代码段 全局数据目标(全局变量) ??用什么样的算法实现静态存储分配 静态存储分配策略介绍 顺序分配算法 按照程序段出现的先后顺序逐段分配 分层分配算法 允许程序段之间的覆盖(覆盖可能性分析) 嵌套式程序 program layer int a,b,c procedure Sub1(x,y,z) int x,y,z procedure add(a,b) real a,b begin Real x,y,z x=a y=x*2+b z=1/y end begin …… end procedure Sub2(x,y) …… begin …… sub1(a1,a2,a3) …… end 静态存储分配无法克服的问题1 动态数组问题 层次单元法 层次单元 标准单元的使用 静态存储分配无法克服的问题2 递归调用问题 栈式存储分配 栈(Stack)式存储分配 用途 过程的局部环境 活动记录 特点 嵌套调用次序 先进后出 生存期限于本次调用 自动释放 过程数据区结构 SPn SPn-1 …… SP1 SP0 静态存储分配无法克服的问题3 被调用者的生存期超过调用者/局部数据需要保留( save ) 堆式存储分配 堆(Heap)式存储分配 用于动态数据结构 存储空间的动态分配和释放 实现方法: 将内存空间分为若干块,根据用户要求分配 无法满足时,调用无用单元收集程序将被释放的块收集起来重新分配 8.3 参数传递 传值调用 call-by-value 过程调用时计算实参(Actual),将值存到活动记录 形参(Formal)绑定于活动记录的实参域 引用调用 Call-by-Reference/Address 如果实在参数具有左值,则存放其左值到活动记录中;否则计算出表达式的值,将此值存入一个单元,并将该单元的地址传给被调用者。 复制恢复 Copy-Restore 将参数的左、右值同时传给被调用者,被调用者直接使用右值,并将计算结果按照左值返回给调用者 传名调用Call-by-Name 将被调过程的过程体复制到调用处,并将每一个形参“文字地”替换成实参 用换名子程序实现Thunk 是一种早期的语言ALGOL用的一种参数传递方式 8.4 过程调用 过程(procedure) 子程序(subroutine)、函数(function) 过程的定义与调用 形参和实参的结合:参数计算与传递 调用与返回 工作方式 调用方:当前环境的保存与恢复 被调方:构造环境,参数绑定 过程调用实现 简单过程调用 实在参数的计算和保存 控制转移、返回地址的保存 实在参数和形式参数
您可能关注的文档
- 包头师范学院中国现代文学课件第一章 绪论.ppt
- 包头师范学院中国音乐史与欣赏课件第八章第二讲 明清时期音乐.ppt
- 包头师范学院中国音乐史与欣赏课件第八章第三讲 明清时期音乐.ppt
- 包头师范学院中国音乐史与欣赏课件第二章 远古夏商时期.ppt
- 包头师范学院中国音乐史与欣赏课件第九章第二讲 刘天华、阿炳与民族器乐的发展.ppt
- 包头师范学院中国音乐史与欣赏课件第九章第三讲 抗战时期音乐家聂耳、黄自.ppt
- 包头师范学院中国音乐史与欣赏课件第九章第四讲 抗战时期音乐家冼星海.ppt
- 包头师范学院中国音乐史与欣赏课件第九章第五讲 抗战时期音乐家与延 安音乐.ppt
- 包头师范学院中国音乐史与欣赏课件第九章第一讲 肖友梅 赵元任、王光祈、黎锦晖.ppt
- 包头师范学院中国音乐史与欣赏课件第六章 民歌欣赏.ppt
- 书面表达之建议信(讲义)-中考英语一轮复习(含答案).pdf
- 中考历史复习小众题型类:填空题、改错题、判断题(70题).pdf
- 2024年吉林省县乡教师选调考试《教育学》真题汇编带解析必背【基础题】.pdf
- 2025年中考语文备考之《朝花夕拾》名著导读及考题.pdf
- 小说标题的含义和作用(模拟突破)-2025年中考语文考点突破之小说阅读(解析版).pdf
- 阅读理解之应用文(练习)-中考英语一轮复习(含答案).pdf
- 小说情节作用(模拟突破)-2025年中考语文考点突破之小说阅读(原卷版).pdf
- 小说段落作用(模拟突破)-2025年中考语文考点突破之小说阅读(解析版).pdf
- 小说段落作用(试题专练)-2025年中考语文考点突破之小说阅读(解析版).pdf
- 2025年上海市16区初三语文一模试题汇编之现代文阅读二(记叙文)学生版.pdf
文档评论(0)