- 1、本文档共53页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CompilerPrinciples 第八讲 运行时存储空间组织 目标程序运行时的活动 运行时存储器的划分 存储分配策略 编译程序在完成词法、语法和语义分析后,在生成目标代码之前,需要把程序的静态正文和实现这个程序的运行时的活动联系起来,弄清楚将来在代码运行时刻,源代码中的各种变量、常量等用户定义的量是如何存放的,如何去访问它们。 在程序的执行过程中,程序中数据的存取是通过与之对应的存储单元来进行的。在程序语言中,程序使用的存储单元都是由标识符来表示的。它们对应的内存地址都是由编译程序在编译时或由其生成的目标程序运行时进行分配。所以对于编译程序来说存储组织与管理是一个复杂而又十分重要的问题。这一章就是对目标程序运行时的活动和运行环境进行讨论,主要讨论存储组织与管理, 包括活动纪录的建立与管理、存储器的组织与存储分配的策略、非局部名称的访问等问题。 §1.目标程序运行时的活动 一、过程的活动 这一节讨论一个过程的静态源程序和它的目标程序在运行时的活动之间的关系。 一个过程的活动指的是该过程的一次执行。 关于过程P一个活动的生存期,指的是从执行该过程体第一步操作到最后一步操作之间的操作序列,包括执行P时调用其他过程花费的时间。一般来说,术语“生存期”指的是在程序执行过程中若干步骤的一个顺序序列。 所谓递归过程是指一个过程P,若在其过程体内又再次转向它自身;或者P调用了P1,而P1中又调用了P。源语言是否允许递归过程直接影响了存储空间的分配策略。 例如Fortran中不允许递归过程,不允许含可变体积的数据项或待定性质的名字,这就完全确定了Fortran语言的分配策略—静态分配,即在编译阶段就能完全确定程序中所需的存储空间以及各个数据项的位置。 而Algol中允许递归过程,还允许可变数组,这样一来就必须使用动态分配策略了。 二、存储分配策略 运行时的存储空间组织基本使用三种分配策略: ? 静态分配策略:在编译时对所有对象分配固定的存储单元,且在运行时保持不变。 ? 栈式动态分配策略:在运行时把存储器作为一个栈进行管理。每当调用一个过程,它所需要的存储空间就动态地分配于栈顶,一旦退出,它所占空间就予以释放。 ? 堆式动态存储策略:在运行时把存储器组织成堆结构,以方便用户对存储空间的申请与归还(回收)。凡申请者从堆中分给一块,凡释放者退回给堆。 三、参数传递 1.传地址(call by address/reference): 把实在参数的地址传递给相应的形式参数。在过程段中,每个形式参数都有一个相应的存储单元:形式单元,用来存放相应的实在参数的地址。当调用一个过程时,调用段必须先把实在参数的地址传递到一个被调用段可以访问的地方。如果实在参数是个简单变量,则直接传递它的地址;如果它是表达式,那就先把它的值计算出来并存放在某一临时单元之中,然后传送这个临时单元的地址。 当程序控制转入被调用段后,被调用段首先把上述地址抄入自己的形式单元中,过程体对形式参数的任何引用或赋值都被处理成对形式单元的间接访问。 2.传值(call by value): 调用过程计算实参的值,存放在一个被调用过程可以取到的地方。被调用过程执行时,首先将这些值抄入自己的形式单元中,然后就像使用局部变量一样使用这些形式单元。 如果实在参数不为指针,则在这种情况下被调用段无法改变实参的值。 例如,看下面的Pascal程序: (1)program reference(input,output); (2)var a,b:integer; (3)procedure swap({var} x,y:integer); (4) var temp:integer; (5) begin (6) temp:=x; (7) x:=y; (8) y:=temp (9) end; (10)begin (11) a:=1; b:=2; (12) swap(a,b); (13) writeln(‘a=’,a);writeln(‘b=’,b) (14)end. 带有过程swap的PASCAL程序 procedure swap(x,y:integer); //传值 var temp:integer;
您可能关注的文档
- 登高创作版20150410汇编.ppt
- 登高假设作业安全培训试题2及答案汇编.docx
- 登革热媒介监测指南汇编.pptx
- 登上地球之巅汇编.ppt
- 等比数列的定义及通项公式汇编.pptx
- 等比数列的概念汇编.ppt
- 等比数列的概念及通项公式(一)汇编.ppt
- 等比数列的概念及通项公式汇编.ppt
- 等比数列概念及通项公式(省获奖)汇编.ppt
- 等比数列汇编.ppt
- 浙江衢州市卫生健康委员会衢州市直公立医院高层次紧缺人才招聘11人笔试模拟试题参考答案详解.docx
- 浙江温州泰顺县退役军人事务局招聘编外工作人员笔试备考题库及参考答案详解一套.docx
- 江苏靖江市数据局公开招聘编外工作人员笔试模拟试题及参考答案详解.docx
- 广东茂名市公安局电白分局招聘警务辅助人员40人笔试模拟试题带答案详解.docx
- 江苏盐城市大丰区住房和城乡建设局招聘劳务派遣工作人员4人笔试模拟试题带答案详解.docx
- 浙江舟山岱山县东沙镇人民政府招聘笔试模拟试题及参考答案详解1套.docx
- 最高人民检察院直属事业单位2025年度公开招聘工作人员笔试模拟试题含答案详解.docx
- 浙江金华市委宣传部、中共金华市委网信办所属事业单位选调工作人员笔试备考题库及答案详解1套.docx
- 广东深圳市党建组织员招聘40人笔试模拟试题及答案详解1套.docx
- 江苏南京水利科学研究院招聘非在编工作人员4人笔试模拟试题及参考答案详解.docx
最近下载
- 2025年4月20日四川省事业单位考试《公共基础知识》试题及答案解析参考.pdf
- 中层竞聘面试题目答案.doc VIP
- 电力系统优化与调度软件:PLEXOS二次开发_(4).电力系统优化理论.docx VIP
- 传染病、消毒知识测试题及答案.docx VIP
- 2025年解放军联勤保障部队第960医院医护人员招聘备考试题及答案解析.docx VIP
- 2021年版国家免疫规划疫苗儿童免疫程序相关知识考核试题含答案.docx VIP
- 电力系统优化与调度软件:Xpress二次开发_(3).电力系统优化问题的数学建模.docx VIP
- 中建钢筋精算管理操作手册.pdf VIP
- 电商仓库主管月工作总结.pptx
- 预防接种工作规范(2023版)试题.docx VIP
文档评论(0)