《编译原理与技术》讲义ppt课件.ppt

《编译原理与技术》讲义ppt课件.ppt

ID:58862966

大小:515.00 KB

页数:62页

时间:2020-09-30

《编译原理与技术》讲义ppt课件.ppt_第1页
《编译原理与技术》讲义ppt课件.ppt_第2页
《编译原理与技术》讲义ppt课件.ppt_第3页
《编译原理与技术》讲义ppt课件.ppt_第4页
《编译原理与技术》讲义ppt课件.ppt_第5页
资源描述:

《《编译原理与技术》讲义ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、编译原理与技术中间代码生成2021/8/211《编译原理与技术》讲义2021/8/21《编译原理与技术》讲义2中间代码生成-中间代码形式-控制流语句翻译2021/8/21《编译原理与技术》讲义3中间代码生成中间代码的种类-后缀式(逆波兰式)e.g.1a+b*-cabc@*+e.g.21)a:=b*-c+b*-c,其后缀式为abc@*bc@*+assign2)ifa>bthenc:=c+1ab>cc1+assignIF-语法树vs.分析树e.g.31)a:=b*-c+b*-c,其语法树为2021/8/21《编译原理与技术》讲义4-e.g.31)

2、a:=b*-c+b*-c语法树vs.分析树中间代码的种类assigna+*b@c*b@cassignEEE+E*EbE@Ea赋值语句cE*EbE@c2021/8/21《编译原理与技术》讲义5-e.g.32)a:=b*-c+b*-c语法树vs.DAG中间代码的种类assigna+*b@c*b@cassigna+*b@c2021/8/21《编译原理与技术》讲义6中间代码的种类e.g.4构造表达式的语法树(DAG)产生式语义规则EE1+E2E.nptr:=mknode(‘+’,E1.nptr,E2.nptr)EE1-E2E.nptr:=mknod

3、e(‘-’,E1.nptr,E2.nptr)EE1*E2E.nptr:=mknode(‘*’,E1.nptr,E2.nptr)EE1/E2E.nptr:=mknode(‘/’,E1.nptr,E2.nptr)E(E1)E.nptr:=E1.nptrE-E1E.nptr:=mknode(‘@’,E1.nptr,-)EnumberE.nptr:=mkleaf(‘NUM’,number.lex_val)EidE.nptr:=mkleaf(‘ID’,id.entry)2021/8/21《编译原理与技术》讲义7中间代码的种类e.g.4构造表达

4、式的语法树(DAG)E.nptr-E的语法树(根结点指针)mknode(op,left,right)-建立一个表达式语法树结点,它的运算符为op,左、右运算对象是left和right所指的语法树。mkleaf(‘NUM’,number.lex_val)-mkleaf(‘ID’,id.entry)-建立表达式语法树的叶子结点。2021/8/21《编译原理与技术》讲义8e.g.4构造表达式a+b*-4的语法树(DAG)中间代码的种类+IDa*IDb@NUM42021/8/21《编译原理与技术》讲义9中间代码的种类三地址代码一般形式:x:=yopz或

5、x:=opye.g.5a:=b*-c+b*-c的三地址代码1)t1:=-c1’)t1:=-c2)t2:=b*t12’)t2:=b*t13)t3:=-c3’)t3:=t2+t24)t4:=b*t34’)a:=t35)t5:=t2+t46)a:=t52021/8/21《编译原理与技术》讲义10中间代码的种类常用的三地址代码-x:=yopz二元运算-x:=opy单目运算-x:=y值拷贝-gotoL无条件转移到代码标号L处-ifxRELOPygotoL条件转移代码:若x和y满足RELOP关系,则转移至代码标号L处-paramX参数X-CALLproc,

6、N调用过程proc,参数个数为N2021/8/21《编译原理与技术》讲义11中间代码的种类常用的三地址代码(续)-returny过程返回,返回值为y-x:=y[i]x[i]:=y变址语句-x:=&y*x:=yx:=*y指针操作语句三地址代码实现形式-四元式:(op,arg1,arg2,result)-三元式:(op,arg1,arg2)-间接三元式(三元式的指针表)2021/8/21《编译原理与技术》讲义12中间代码的种类e.g.6a:=b*-c+b*-c的四元式和三元式四元式vs.三元式1)(@,c,-,t1)①(@,c,-)2)(*,b,t

7、1,t2)②(*,b,①)3)(@,c,-,t3)③(@,c,-)4)(*,b,t3,t4)④(*,b,③)5)(+,t2,t4,t5)⑤(+,②,④)6)(:=,t5,-,a)⑥(:=,a,⑤)2021/8/21《编译原理与技术》讲义13中间代码的种类e.g.7a:=b*c+d/f的间接三元式间接三元式/调整次序三元式⑴⑬⑭⑬(*,b,c)⑵⑭⑬⑭(/,d,f)⑶⑮⑮⑮(+,⑬,⑭)⑷⑯⑯⑯(:=,a,⑮)2021/8/21《编译原理与技术》讲义14中间代码的种类四元式按编号次序计算计算结果存于result方便移动,计算次序容易调整大量引入临

8、时变量三元式按编号次序计算由编号代表不方便移动在代码生成时进行临时变量的分配间接三元式按编号次序计算方便移动,计算次序容易调整在代码生成时进行临时变量

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

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

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