编译原理教程 第三版 教学课件 作者 胡元义 全书 第6章.pptVIP

  • 30
  • 0
  • 约1.39万字
  • 约 92页
  • 2017-08-19 发布于广东
  • 举报

编译原理教程 第三版 教学课件 作者 胡元义 全书 第6章.ppt

  至今,我们已经研究了对源程序进行静态分析的编译程序的不同阶段,这些分析仅取决于源程序本身的特性,它与目标程序、目标机器以及目标机器的操作系统特性完全无关。但是,编译程序的最终目的是将源程序翻译成能够在目标机器上运行的目标程序,这就要求编译程序不仅能生成目标代码,而且还要在生成目标代码之前进行目标程序运行环境的设计和数据空间的分配,即在生成目标代码之前,需要把程序的静态的正文与实现该程序运行时的活动联系起来。 如在目标代码运行时,源程序中的各种变量、常量等如何在存储器中存放,又如何对它们进行访问;这些变量或常量的作用域和生存期如何确定;递归过程(函数)的数据空间如何在运行过程中实现动态的分配。这些问题对编译程序来说,都是非常复杂而又十分重要的。   从编译角度看,程序语言关于名字的作用域和生存期的定义规则决定了分配目标程序数据空间的基本策略。如果一个程序语言不允许有递归过程,不允许含有可变体积的数据项目或待定性质的名字,那么就能在编译时完全确定其程序的每个数据项目存储空间的位置,这种策略叫做静态分配策略。如果程序语言允许有递归过程(函数)和可变(体积的)数组,则其程序数据空间的分配需采用某种动态策略(在程序运行时动态地进行程序数据空间的分配);此时,目标程序可用一个栈作为动态的数据空间。程序运行时,每当进入一个过程(函数)或分程序,其所需的数据空间就动态地分配于栈顶, 一旦该过程

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档