第八章代码生成序81目标机器82运行存储管理83基本块内容摘要:
地址语句序列。 输出:一个基本块表,其中每一条三地址 语句仅在一个块中。 方法 : 17 1.首先确定各个基本块的入口语句。 采用如下 规则: ( a) 代码序列的第一个语句。 ( b) 任何一个条件或无条件转移语句转移到 的那条语句。 ( c) 任何紧接在一个条件或无条件转移语句 之后的那条语句。 2.对每一个入口语句。 其基本块是由该入口 语句到下一个入口语句(不包括此入口语 句)、或到一个转移语句(包括此转移语 句)、或到一个停语句 (包括此停语句)之 间的语句序列组成。 18 例 计算两个长度为 20的向量 a和 b的点积。 begin prod:= 0。 i:=1。 do begin prod:=prod+ prod a[i] *b[i]。 i:=i+ 1。 while i=20 end。 图 8. 6 计算向量点积程序 19 ( 1) prod:=0 ( 11) prod:=t8 ( 2) i:=1 ( 12) t9:=i+ 1 (3) t1:=4*i ( 13) i:= t9 ( 4) t2:=al ( 14) if i<= 20 goto( 3) ( 5) t3:=t2[t1] ( 6) t4:=4*i ( 7) t5:=b- 4 ( 8) t6:=t5[t4] ( 9) t7:=t3*t6 (10) t8:=prod+t7 图 8. 7 计算向量点积的三地址代码 20 8. 3. 2 流图 (控制流程图) 定义 一个控制流程图是具有唯一首结点的有向图,表示成 G=(N, E, n0) 其中, N是 基本块集; n0是 首结点,是含有第一条语句的基 本块; E是 有向边集。 E的 构成如下:基本块 Bi和基本块 Bj满足如下条件之一,则从 Bi引一条有向边到 Bj。 1. Bj紧跟在 Bi之 后,且 Bi的出口语句不是 goto语句或停语句。 21 2. Bi的出口语句是“ [if]goto L”语句,而 L是 Bj 的入口语句, Bi是 Bj的前驱结点。 例: L1: if ab goto L2 goto Lnext L2: if cd goto L3 goto L4 L3: t1 :=y+z x :=t1 goto L1 L4: t2 :=yz x :=t2 goto L1 22 L1: if ab goto L2 goto Lnext L2: if cd goto L3 goto L4 L3: t1 :=y+z x :=t1。第八章代码生成序81目标机器82运行存储管理83基本块
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。