第9篇 运行时存储空间组织.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第九章 运行时空间组织 教师:蒋俊锋 第九章 运行时空间组织 9.1 目标程序运行时的活动 9.2 运行时存储器的划分 9.4 简单的栈式存储分配 9.5 嵌套过程语言的栈式分配 9.1 目标程序运行时的活动 过程,形参,实参的概念 以C语言为例: int main() { char* str1=“abc”;char* str2=“cde”; strcat(str1,str2); //str1,str2为实参 } strcat(char* a,char* b){…} //a,b为形参(亚元) 传值,传地址的概念 传值:把实参的值计算出来,调用开始时,将这些值抄进自己的形式单元中,然后像使用局部数据名一样使用这些形式单元。这种情况下将无法改变实参的值。 传地址:把实参的地址传递给相应的形式参数。这种情况下将无法改变实参地址单元中的值。但无法改变地址的值。 9.1 目标程序运行时的活动 过程的活动: 指该过程的一次执行。每次执行一个过程体,就产生该过程的一个活动。 过程的生存周期: 指的是从执行该过程体第一步操作到最后一步操作之间的操作序列。 9.2 运行时存储器的划分 运行时存储器的划分 程序运行时存储空间划分如下图所示: 9.2 运行时存储器的划分 运行时存储器的划分 程序运行时存储空间划分如下图所示: 活动记录: 在栈中为每个过程的执行用一个连续的存储空间来管理,这样的空间称为活动记录。 活动记录中各个字段的含义: 连接数据: 返回地址: 动态链: 静态链: 形式单元:存放形式参数 局部数据区 临时单元:表达式的中间结果 内情向量:把数组的有关信息记录在一个内情向量中,每个数组的内情向量必须包括:维数,各维的上,下限,首地址,以及数组(元素)的类型. 局部变量。 第九章 运行时空间组织 9.1 目标程序运行时的活动 9.2 运行时存储器的划分 9.4 简单的栈式存储分配 9.5 嵌套过程语言的栈式分配 9.4 简单的栈式存储分配 C语言,特点:过程定义不允许嵌套,但是允许递归 C语言结构如下 栈式存储分配的原理: 程序运行时,每当进入一个过程时,就把它的活动记录压入栈。一个过程的活动记录在编译时可以静态地确定。当该过程运行结束时,相应的活动记录被弹出栈。 C的活动记录 连接数据: 老SP:前一个活动记录的地址 返回地址。 参数个数。 形式单元 局部数据区: 临时单元 内情向量 简单变量 SP:活动记录的基地址 TOP:活动记录的栈顶单元 C语言的过程调用和返回 C语言的四元式序列是: par T1 … par Tn call P,n 其中T1,…,Tn为过程参数,P指向过程的一条执行的指令,n为参数个数 par T1 … par Tn 被翻译成: (i+3)[top]:=Ti //传值 或(i+3)[top]:=addr(Ti) //传地址 Call P,n被翻译成: 1[top]:=SP(老SP) 3[top]:=n JSR P 进入P以后执行下面的指令: SP:=TOP+1;//SP指向新的活动记录基址 1[SP]:=返回地址; TOP:=TOP+L;//L为活动记录长度 当该活动执行完毕以后执行下面的指令: TOP:=SP-1//指向前一个活动记录的栈顶 SP:=0[SP]//指向前一个记录的基址 X:=2[TOP]//指向前一个活动记录的返回地址 UJ 0[x]//无条件跳转 第九章 运行时空间组织 9.1 目标程序运行时的活动 9.2 运行时存储器的划分 9.4 简单的栈式存储分配 9.5 嵌套过程语言的栈式分配 9.5 嵌套过程语言的栈式分配 PASCAL的过程可以嵌套 嵌套层次: 主函数的层次为0,直接嵌套在主函数中的过程层次是1….例如: program a procedure b begin …end//for b begin…end //for a a层次为0,b的层次为1。 a为b的直接外层过程,b为a的直接内层过程。 program P//第0层 var a,x:integer; procedure Q(b:integer) //第1层 var i:integer;

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档