《学时数及其分布》PPT课件.ppt

想预览更多内容,点击预览全文

申明敬告:

本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。如果您已付费下载过本站文档,您可以点击这里二次下载

文档介绍

目标代码生成

源程序

编译前端

中间

代码

代码优化

中间

代码

代码生成器

目标程序

符 号 表 代码生成器的位置 代码生成器的输入包括中间代码和符号表中的信息。 目标代码一般有以下三种形式: 〔1〕能独立执行的机器语言代码,所有地址均以定位〔代真〕 。 〔2〕待装配的机器语言模块。当需要执行时,由连接装入程序把它们和某些运行程序连接起来,转换成能执行的机器语言代码。

〔3〕汇编语言代码,尚须经过汇编程序汇编,转换成可执行的机器代码。 代码生成器着重考虑两个问题: 一是如何使生成的目标代码较短;另一个是如何充分利用计算机的存放器,减少目标代码中访问存储单元的次数。这两个问题直接影响代码的执行速度。

根本问题:所有代码生成器都要面对何种中间代码输入, 〔是式逆波兰,四元式,还是三元式?等问题〕何种代码做为目标程序,选择适当的代码指令,最优的存放器分配方案,和计算顺序等根本问提.

为此本书见立了目标机器模型:并把中间代码对应的目标代码做了规定.利用待用信息,存放器描述数组RVALUE,变量地址描述数组AVALUE等概念建立了代码生成算法. P316[例11。2]同学们应该好好研究。 P317 表11。4 各中间代码对应的目标代码应该背过。

存放器分配:利用执行代价的概念说明如何建立更佳的存放器分配方案。 对于循环L中某变量M,如果分配一个存放器给它专用,那么,每执行循环一次,执行代价的节省数可用公式〔11。1〕计算。这个计算公式应该掌握。 [例11。3]图11。4代表某程序的最内层循环,其中无条件转移和条件转移指令均以改用箭头来表示。各根本块入口之前和出口之后的活泼变量已列在图中。假定R0,R1和R2三个存放器在该循环中将固定分配给某三个变量使用。现在,我们利用公式〔11。1〕计算各变量的执行代价节省数,并且取执行代价节省数最高的来确定这三个变量。 解:因为B1中引用a前已对

您可能关注的文档

最近下载