运行时的存储组织及管理.pptxVIP

  • 7
  • 0
  • 约5.46千字
  • 约 37页
  • 2021-07-14 发布于河北
  • 举报
运行时的存储组织及管理2004年12月28日编译器的应用模型词法分析程序表格管理出错处理语法分析程序语义分析程序编译的前端(Front End)中间代码生成程序代码优化程序编译的后端(Back End)目标代码生成程序编译原理运行时的存储组织及管理概述存储组织运行时的存储分配策略静态存储分配动态存储分配对非局部名字的访问参数传递编译原理运行时的存储组织及管理源程序 计算环境 运行时的环境 计算 目标代码当词法分析扫描得到标识符,并将它填入符号表的过程中需要给识别出来的标识符分配内存空间。源程序由一组过程按某种规则组成。过程的一次执行称作一次活动。在过程的语句序列执行之前,过程中访问的对象构成此过程的运行环境,由运行支持程序组织好。编译程序根据如何组织运行环境而生成目标代码。映射编译原理运行时环境的作用目标程序运行时所需存储空间的组织与管理以及源程序中变量存储空间的分配。编译原理有关源程序中的一些问题问题的提出:如何构造运行程序的策略和方法过程活动树控制栈说明的作用域名字的绑定构造运行程序和源程序有关的一些问题编译原理过程源程序由一组过程组成,不同的程序设计语言,由过程构成源程序的方法不同。构成源程序的两个过程行文,要么是嵌套的,要么是不相交的。编译原理program sort(input, output); var a:array[0..10] of integer; procedure readarry; var i: integer; begin for i:=1 to 9 do read(a[i]) end; function partition(y,z:integer):integer; var i,j,x,v : integer; begin …… end; procedure quicksort(m,n:integer) var i:integer; begin if(nm) then begin i:=partition(m,n); quicksort(m,i-1); quicksort(i+1,n) end end begin a[0] := -9999;a[10]:=9999; readarray; quicksort(1,9) end编译原理活动树程序执行期间的控制流: 程序执行的控制是连续的:在任何一步,控制都处于程序的某一点过程的每一次执行都是从过程体的开头 开始,并最终把控制返回到紧接着该过程被调用点的后面。过程的一次活动: 过程体的每一次执行。过程p的一次活动的生存期:在该过程体的执行中的第一步和最后一步之间的一序列步骤的执行时间,其中包括执行过程p所调用的过程的执行时间,以及这些过程所调用的过程的执行时间,如此等等。一个过程是递归的,如果同一过程的一次新的活动可以在前面活动结束以前开始。编译原理活动树为什么过程的活动可以用树形结构描述?过程活动的特点:每当控制流从过程p的活动进入到过程q的活动中后,它将返回到过程p的同一次活动中。也就是说,如果a和b是两个过程活动,那么它们的生存期要么是不重叠的,要么是嵌套的。在树形结构中,节点间的关系就反映了过程之间的关系:父子关系:嵌套兄弟关系:先后编译原理活动树用一颗树来描绘控制进入和离开活动的途径。这祥的树称作活动树。每个节点代表过程的一个活动根节点代表主程序的活动当且仅当控制流从活动a进入活动b时,节点a是b的父节点当且仅当a的生存期先于b的生存期时,a节点处于b结点的左边一个结点代表一个唯一的活动, 且每一个活动只有一个结点表示,当控制进入某一个活动时,可以直接说,控制在这个结点上。编译原理program sort(input, output); var a:array[0..10] of integer; procedure readarry; var i: integer; begin for i:=1 to 9 do read(a[i]) end; function partition(y,z:integer):integer; var i,j,x,v : integer; begin …… end; procedure quicksort(m,n:integer) var i:integer; begin if(nm) then begin i:=partition(m,n); quicksort(m,i-1); quicksort(i+1,n) end end begin a[0] := -9999;a[10]:=9999; readarray; quicksort(1,9) endsq(1,9)rp

文档评论(0)

1亿VIP精品文档

相关文档