- 1、本文档共128页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
;;
?运行时刻环境概要
?存储组织和帧栈设计方法;
?目标程序的代码放置在代码区
?静态区、堆区、栈区分别放置不同类型生命期的数据值
?实践中,栈是由低地址向高地址增长,而堆是由高地址向低地址增长;
?运行时刻环境概要
?存储组织和帧栈设计方法;
?静态分配
O编译器在编译时刻就可以做出存储分配决定,不需要考虑程序运行时刻的情形
O全局变量
?动态分配
O栈式存储:和过程的调用/返回同步进行分配和回收,值的生命期和过程生命期相同
O堆存储:数据对象比创建它的过程调用更长寿
?手工进行回收:C++/C…
?垃圾回收机制:Java/C#/Python…;
?过程调用(过程活动)在时间上总是嵌套的
O后调用的先返回
O因此用栈式分配来分配过程活动所需内存空间
?程序运行的所有过程活动可以用树表示
O每个结点对应于一个过程活动
O根结点对应于main过程的活动
O过程p的某次活动对应的结点的所有子结点:此次活动所调用的各个过程活动(从左向右,表示调用的先后顺序);
?程序:P277,图7-2
?过程调用(返回)序列和活动树的前序(后序)遍历对应
?假定当前活动对应结点N,那么所有尚未结束的活动对应于N及其祖先结点。;;;
?调用代码序列(callingsequence)为活动记录分配空间,填写记录中的信息
?返回代码序列(returnsequence)恢复机器状态,使调用者继续运行
?调用代码序列会分割到调用者和被调用者中
O根据源语言、目标机器、操作系统的限制,可以有不同的分割方案
O把代码尽可能放在被调用者中;
?数据方面
O能够把参数正确地传递给被调用者
O能够把返回值传递给调用者
?控制方面
O能够正确转到被调用过程的代码开始位置
O能够正确转回调用者的调用位置(的下一条指令)
?调用代码序列和活动记录的布局相关;
?调用者和被调用者之间传递的值放在被调用者活动记录的开始位置
?固定长度的项放在中间位置
O控制链、访问链、机器状态字段
?早期不知道大小的项在活动记录尾部
?栈顶指针(top_sp)通常指向固定长度字段的末端;
?调用代码序列(Callingsequence)
O调用者计算实在参数的值
O将返回地址和原top_sp存放到被调用者的活动记录中。调用者增加top_sp的值(越过了局部数据、临时变量、被调用者的参数、机器状态字段)
O被调用者保存寄存器值和其他状态字段
O被调用者初始化局部数据、开始运行
?返回代码序列(Returnsequence)
O被调用者将返回值放到和参数相邻的位置
O恢复top_sp和寄存器,跳转到返回地址;;
?看一个实际的例子;;
?没有嵌套过程时的数据访问
OC语言中,每个函数能够访问的变量
?函数的局部变量:相对地址已知,且存放在当前活动记录内,top_sp指针加上相对地址即可访问
?全局变量:在静态区,地址在编译时刻可知
O很容易将C语言的函数作为参数进行传递
?参数中只需包括函数代码的开始地址。
?在函数中访问非局部变量的模式很简单,不需要考虑过程是如何激活的;
?PASCAL中,如果过程A的声明中包含了过程B的声明,那么B可以使用在A中声明的变量。
?当B的代码运行时,如果它使用的是A中的变量。那么这个变量指向运行栈中最上层的同名变量。
?但是,我们不能通过嵌套层次直接得到A的活动记录的相对位置,必须通过访问链访问;
?ML是一种函数式语言.
变量一旦被声明并初始化就不会在改变,只有少数几个例外.
?定义变量并设定它们不可更改的初始值的语句有如下形式valname=(expression)
?函数使用如下语法进行定义
funname(arguments)=body
?使用下列形式的let语句来定义函数体
letlistofdefinitionsinstatementsend
其中,定义通常是val或fun语句.
每个这样
您可能关注的文档
- 安全生产智能化保障技术(第2版)绪论.pptx
- 爆破工程(第3版)课件:爆破安全要求.pptx
- 爆破工程(第3版)课件:地下工程掘进爆破.pptx
- 爆破工程(第3版)课件:构 (建) 筑物拆除爆破与特种爆破.pptx
- 爆破工程(第3版)课件:露天爆破技术 .pptx
- 比亚迪秦EV新能源汽车电机驱动系统.pptx
- 边缘智能计算应用课件:NLE-AI800开发板介绍及案例体验.pptx
- 边缘智能计算应用课件:手掌检测在嵌入式设备中的部署和运行.pptx
- 编译方法、技术与实践概述.pptx
- 编译方法、技术与实践课件:中间代码生成(二).pptx
- 2024-2030全球汽车电池X射线成像检测行业调研及趋势分析报告.docx
- 2024年全球及中国水性预分散颜料行业头部企业市场占有率及排名调研报告.docx
- 2024年全球及中国热型气溶胶发生器行业头部企业市场占有率及排名调研报告.docx
- 2025年中铁一局集团新运工程有限公司招聘笔试参考题库含答案解析.pdf
- 2024-2030全球2B酸行业调研及趋势分析报告.docx
- 2024-2030全球厚度刨削机行业调研及趋势分析报告.docx
- 2024-2030全球反射光栅行业调研及趋势分析报告.docx
- 2024-2030全球雨水槽行业调研及趋势分析报告.docx
- 2024-2030全球连铸电磁搅拌行业调研及趋势分析报告.docx
- 2024-2030全球互感式传感器行业调研及趋势分析报告.docx
文档评论(0)