哈工大编译原理6-11.ppt

哈工大编译原理6-11.ppt

ID:51594078

大小:342.50 KB

页数:68页

时间:2020-03-25

哈工大编译原理6-11.ppt_第1页
哈工大编译原理6-11.ppt_第2页
哈工大编译原理6-11.ppt_第3页
哈工大编译原理6-11.ppt_第4页
哈工大编译原理6-11.ppt_第5页
资源描述:

《哈工大编译原理6-11.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第六章中间代码1中间代码生成6.1中间语言6.2常用语句的翻译6.2.1说明语句6.2.2赋值语句6.2.3布尔表达式6.2.4过程语句2辛明影序“中间代码生成”程序的任务是:方法:语法制导翻译。采用独立于机器的中间代码的好处:把经过语法分析和语义分析而获得的源程序中间表示翻译为中间代码表示。1.便于编译系统建立和编译系统的移植;2.便于进行独立于机器的代码优化工作。3辛明影6.1中间语言语法树后缀式三地址代码表示6.1.1图表示法语法树,有向非循环图和后缀式表示源程序的自然层次结构,例如:a:=b*-c+b*-c4辛

2、明影=a+*bc-(a)语法树*-cb5辛明影赋值语句:中缀式:a:=b*-c+b*-c后缀式:abc-*bc-*+=6辛明影=a+*bc-(b)dag(DirectedAcyclicGraph)7辛明影6.1.2三地址代码一般形式x:=yopz相应于图6.1的树和dag的三地址代码t1:=-ct2:=b*t1t5:=t2+t2a:=t5对于dag的代码t1:=-ct2:=b*t1t3:=-ct4:=b*t3t5:=t2+t4a:=t5对于语法树的代码8辛明影(3)无条件转移语句gotoL;(4)条件转移语句ifxre

3、lopygotoL,关系运算符号relop(<,=,>=等等);(2)赋值语句x:=opy,op为一目算符,如一目减uminus、逻辑非not、移位算符及转换算符;(1)赋值语句x:=yopz,op为二目算术算符或逻辑算符;6.1.3三地址语句的种类9辛明影(5)复制语句x:=y;在设计中间代码形式时,选择多少种算符需要tradeoff.(8)地址和指针赋值x=&y,x=*y和*x=y。(7)索引赋值x:=y[i]及x[i]:=y;(6)过程调用语句paramx和callp,n;过程返回语句returny;10辛明影(

4、1)E.place表示存放E值的名字。6.1.4语法制导翻译生成三地址代码几个用到的量:(2)E.code表示对E求值的三地址语句序列。(3)newtemp是个函数,对它的调用将产生一个新的临时变量。11辛明影S.code:=E.code║gen(id.place':='E.place)产生式语义规则E→E1+E2S→id:=EE.place:=newtemp;E.code:=E1.code║E2.code║gen(E.place':=‘E1.place'+'E2.place)12辛明影E→E1*E2E.place:=

5、newtemp;E.code:=E1.code║E2.code║gen(E.place':=‘E1.place'*'E2.place)语义规则产生式E→-E1E.place:=newtemp;E.code:=E1.code‖gen(E.place´:=´uminus´E1.place)13辛明影产生式语义规则E.place:=E1.place;E.code:=E1.codeE→(E1)产生赋值语句三地址代码的语法制导定义E→idE.place:=id.place;E.code:=‘’14辛明影三地址语句序列是语法树的线

6、性表示,用临时变量代替语法树中的结点。实际实现中,三地址语句序列往往是被存放到一个输出文件中,而不是将三地址语句序列置入code属性之中15辛明影6.1.5三地址代码的具体实现1.四元式op,arg1,arg2,result2.三元式op,arg1,arg23.间接三元式间接码表+三元式表四元式需要利用较多的临时单元,四元式之间的联系通过临时变量实现。中间代码优化处理时,四元式比三元式方便的多,间接三元式与四元式同样方便,两种实现方式需要的存储空间大体相同。16辛明影1、x=yopz常用三地址码的四元式表示:2、x=o

7、py3、gotoL4、ifxropygotoL5、x=y6、parmxcallp,n7、x=y[i]x[i]=y8、x=&yx=*y(op,y,z,x)(op,y,,x)(j,,,L)(jrop,x,y,L)(=,y,,x)17辛明影对于语句a:=b*-c+b*-c的三种表示方法三地址语句的四元式表示(-,c,,t1)(*,b,t1,t2)(-,c,,t3)(*,b,t1,t4)(+,t2,t4,t5)(=,t5,,a)18辛明影(0)(1)(2)(3)(4)(5)uminus*uminus*+assigncbcb(1

8、)aarg1(0)(2)(3)(4)arg2op三地址语句的三元式表示三元式中使用指向三元式语句的指针。19辛明影(14)(15)(16)(17)(18)(19)uminus*uminus*+assigncbcb(15)aarg1(14)(16)(17)(18)arg2opstatement(14)(15)(16)(17)(18)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。