第九章 总结及作业(4)【编译原理】

第九章 总结及作业(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);beginx:=5; a:=x+1end;
begina:=2; pp(a); write(a)
end.

传地址

Program ex;
var a:integer;procedure pp(var x:integer);beginx:=5; a:=x+1end;
begina:=2; pp(a); write(a)
end.

4

Excel表格怎么拉序号递减

输入1
选中第一个序号单元格,鼠标指向填充柄的右下角,直到鼠标变成“+”字形,然后点击拖动至最后一个单元格,即可完成序号列的自动填充。
然后降序排列

另外

program PP(input,output);VAR k:integer;FUNCTION F(n:integer): integer;beginif n<=0 then F:= 1else F:= n * F(n- 1);end;
beginK:= F(10);write(K)
end.

输出10的阶乘

2023-6-22 14:23:30

最后

2023-6-22 14:23:32

你对我百般注视,
并不能构成万分之一的我,
却是一览无余的你。

祝大家逢考必过
点赞收藏关注哦

本文链接:https://my.lmcjl.com/post/1614.html

展开阅读全文

4 评论

留下您的评论.