第九章 总结及作业(4)【编译原理】
- 前言
- 推荐
- 第九章 运行时存储空间组织
- 9.1 目标程序运行时的活动
- 9.1.1过程的活动
- 9.1.2参数传递
- 9.2 运行时存储器的划分
- 9.2.1运行时存储器的划分
- 9.2.2 活动记录
- 9.2.3 存储分配策咯
- 9.3 静态存储分配
- 9.3.1数据区
- *9.3.2公用语句的处理
- *9.3.3等价语句的处理
- 9.3.4 地址分配
- 9.3.5 临时变量的地址分配
- 9.4 简单的栈式存储分配
- 9.4.1C的活动记录
- 9.4.2C的过程调用、过程进入、数组空间分配和过程返回
- 9.5 嵌套过程语言的栈式实现
- 9.5.1非局部名字的访问的实现
- 9.5.2参数传递的实现
- 9.6 堆式动态存储分配
- 9.6.1堆式动态存储分配的实现
- 9.6.2隐式存储回收
- 第九章 作业
- 课堂作业
- 4
- 最后
前言
2023-6-21 10:17:58
以下内容源自《【编译原理】》
仅供学习交流使用
推荐
第八章 总结【编译原理】
第九章 运行时存储空间组织
9.1 目标程序运行时的活动
9.1.1过程的活动
过程 过程的活动 过程的活动记录
类似于
程序 程序的执行(进程) 进程管理块(PCB)
9.1.2参数传递
- 传地址( call by reference)
- 传值( call by value)
- 传名(call by name):也称为“换名”
9.2 运行时存储器的划分
9.2.1运行时存储器的划分
9.2.2 活动记录
以下是我的总结
- 返回地址:在被调过程执行完之后用于返回主调活动的执行调用地址
- 动态链:在被调过程执行完之后用于返回主调活动的活动地址
- 静态链:用于在嵌套过程中逐层向外查找变量作用域
9.2.3 存储分配策咯
- 静态分配策略
- 栈式动态分配策略
- 堆式动态分配策略
9.3 静态存储分配
9.3.1数据区
*9.3.2公用语句的处理
*9.3.3等价语句的处理
9.3.4 地址分配
9.3.5 临时变量的地址分配
9.4 简单的栈式存储分配
9.4.1C的活动记录
9.4.2C的过程调用、过程进入、数组空间分配和过程返回
理解:i+3[TOP]
i+3[TOP]=i[TOP+3]
TOP+3根据图9.14可以看出是指向形式变量的首地址
9.5 嵌套过程语言的栈式实现
9.5.1非局部名字的访问的实现
重点:静态链和动态链的分析
结合:总结分析
过程 层次
P 0
S 1
Q 1
R 2
(b)过程S中调用Q时; Q的display有0 13
因为S和Q同层,所以没有S的5
9.5.2参数传递的实现
9.6 堆式动态存储分配
类似于
第四章 存储器管理【操作系统】
9.6.1堆式动态存储分配的实现
类似于
第四章 存储器管理【操作系统】- 4.3.4 基于顺序搜索的动态分区分配算法
9.6.2隐式存储回收
类似于
第四章 存储器管理【操作系统】- 4.3.3 动态分区分配
第九章 作业
2023-6-22 12:03:37
课堂作业
(1)
a是全局变量
传值 a=6
传地址 a=6
(2)
另外
参阅:
pascal 函数与过程中 定义有无VAR的区别
Pascal函数
使用
Pascal在线运行
传值
Program ex;
var a:integer;
procedure pp(x:integer);
begin
x:=5; a:=x+1
end;
begin
a:=2; pp(a); write(a)
end.
传地址
Program ex;
var a:integer;
procedure pp(var x:integer);
begin
x:=5; a:=x+1
end;
begin
a:=2; pp(a); write(a)
end.
4
Excel表格怎么拉序号递减
输入1
选中第一个序号单元格,鼠标指向填充柄的右下角,直到鼠标变成“+”字形,然后点击拖动至最后一个单元格,即可完成序号列的自动填充。
然后降序排列
另外
program PP(input,output);
VAR k:integer;
FUNCTION F(n:integer): integer;
begin
if n<=0 then F:= 1
else F:= n * F(n- 1);
end;
begin
K:= F(10);
write(K)
end.
输出10的阶乘
2023-6-22 14:23:30
最后
2023-6-22 14:23:32
你对我百般注视,
并不能构成万分之一的我,
却是一览无余的你。
祝大家逢考必过
点赞收藏关注哦