- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第九章 存储的空间结构
第九章 运行时的存储空间 运行时存储空间的结构和分配 过程活动记录AR 运行时变量的访问 运行时的存储空间结构 要保存的信息: 目标代码;数据;库函数代码; 过程活动的控制信息等 运行时的存储空间结构: 目标程序运行时的活动 活动:过程的一次执行。如果a和b是两个活动,则它们的生存期或者是不重叠的,或者是嵌套的。 活动树:由活动构成的一个树,其中 1)树中的每个节点代表一个活动。 2)树的根节点是程序的主过程(函数)的活动。 3)在树中若b为a的儿子节点,则必有a活动调用了b活动。 4)在树中若a为b的左兄弟节点,则必有a活动先于b活动执行。 名字的作用域和邦定 作用域:一个声明起作用的程序部分称为该声明的作用域。一个名字在程序中只声明一次,该名字在程序运行时也可能代表不同的数据对象。 环境和状态:环境表示将名字映射到存储单元的函数,状态表示将存储单元映射到它所保存的值的函数 。 绑定:如果环境将名字x映射到存储单元s,我们就说x被绑定(binding)到s 。 过程活动记录 过程活动记录(AR):过程的一个现场记录 记录内容: ?过程控制信息:先行活动记录的动态链指针、返回地址、层数和长度等 ?机器状态信息:寄存器状态等 ?全局变量信息:非局部变量的信息 ?局部变量值:形参变量、局部变量和临时变量 AR的结构: 抽象地址分配 I. (?,off)? LabelDec ?(?,off) (?,off)? ConstDec ?(?,off) (?,off)? TypeDec ?(?,off) (?,off)? Var id:T ?(?,off+n) (?,off)? ProcDec ?(?,off) (?,off)? FuncDec ?(?,off) II. (?,off)? Proc p() ?(?+1,off1+?+2) (?,off)? Func f():T ?(?+1,off1+?+2) (?,off)? Proc P() ?(?,off+2) (?,off)? Func F():T ?(?,off+2) III. (?,off)? Var ID:T ?(?,off+1) (?,off)? ID:T ?(?,off+n) IV. (?,off)? Proc p( ?(?+1,off0) (?,off)? Func f( ?(?+1,off0) (?,off)? Proc P( ?(?+1,off0) (?,off)? Fucn F( ?(?+1,off0) 抽象地址分配例子 (?,10)Label 100,200; (?,10)Const pai=3.14; (?,10)Type arr=array[1..10]of integer; (?,10)Var x:integer; (?,11) a:array[1..5]of integer; (?,16)Function f( (?+1,4)Var x:real; (?+1,5) a:arr; (?+1,15)Var c:arr; (?+1,16)Procedure G(); (?+1,18)Function F():real (?+1,20) ):real; (?+1,20+?+2 Begin ……end; (?,16) 目标程序运行时的动作(1) 调用一个过/函时,建立新的活动记录;退出一个过/函时,删除它的当前活动记录。这些工作由目标程序来完成,分别分散在过程调用语句、过程入口和过程出口部分的目标代码中。 过/函调用语句所完成的工作 1)在新建立的活动记录里保存现役活动记录的始地址:0[top]:=sp; 2)在新建立的活动记录里记入先行Display表的始地址: 实在过程语句情形:3[top]:=sp+ Noff。 形式过程语句情形:3[top]:=(第二形参单元)。其中第二形参单元是给形参过程名分配的第二个单元。 3)把实参信息传送到新活动记录区的形参单元中; 4)转向相应过程的目标程序。 5)如果是函数调用,则把函数值读到某寄存器中。 目标程序运行时的动作(2) 过/函入口完成的工作 1)在新建立的活动记录里保存返回地址:1[top]:=返回地址 2)在要建立的新活动记录里生成DISPLAY表:从3[top]所指的先行DISPLAY表自底向上抄录?个单元的内容(?是被调用过程的层数),再添上新的sp值。 3)使新建的活动记录成为现役活动记录: sp:=top;top:=top+Moff 过/函出口完成的工作 1)删除本层活动记录,使动态外层的活动记录
您可能关注的文档
- 第8章 C++ IO流的标准库.ppt
- 第8章 采煤机的拆卸的运输与安装调试.pptx
- 第8章 Linu的x编程环境之网络程序设计.ppt
- 第8章 PLC控制系统的设计.ppt
- 第8章 地址和的指针.pdf
- 第8章 妊的娠期合理用药.ppt
- 第8章 异的常处理.pdf
- 第8章 数据的库管理系统.ppt
- 第8章 的同步原理.ppt
- 第8章 的指针.ppt
- 下雨晴天多云刮风暴风雨今天weather displays天气显示.pdf
- 如何有效控制andoid应用耗电量.pptx
- 三重保护为了人类环境机器操作维护说明手册手动功能gd ln serie v1.pdf
- 2024年教师资格之中学信息技术学科知识与教学能力考前冲刺试卷包括详细解答.docx
- 卫生招聘考试之卫生招聘(计算机信息管理)考前冲刺测试卷包含答案.docx
- 2024年助理医师资格证考试之公共卫生助理医师通关试卷附带答案.docx
- 2023-2024年中级会计职称之中级会计经济法考前冲刺模拟卷包含答案.docx
- 2024年安全员之B证(项目负责人)通关练习试题附答案详解.docx
- 安全员之B证(项目负责人)模拟卷附答案详解.docx
- 注册消防工程师之消防安全案例分析通关练习题提供答案解析.docx
文档评论(0)