资源描述:
《漳州师范学院编译原理复习纲要》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十二章代码生成1、代码生成的任务。2、目标代码的三种形式。3、寄存器的分配原则。编译原理复习纲要第十一章代码优化1、代码优化的原则:等价原则、有效原则。2、代码优化的阶段及优化的分类。3、6种常用优化技术。4、基本块及基本块划分方法。5、利用DAG图进行局部优化。6、求必经结点集、回边,寻找循环。例P2686B1:A:=BCD:=B/CE:=A+DF:=2EG:=BCH:=GGF:=HGL:=FM:=Ln1n2n3n4n5n8n6n7BCADE2F,GH,M,L+/n9FA:=BCD:=B/CE:=A+DG
2、:=AH:=GGF:=HGL:=FM:=FA:=BCG:=AH:=GGF:=HGL:=FM:=FG:=BCH:=GGL:=HGM:=LG,L,M被引用G:=BCH:=GGL:=HGL被引用合并BCn1n2n3n4n5n8n6n7ADE2,GH,M,L+/n9F第十章目标程序运行时的存储组织1、存储分配策略:静态存储分配、动态存储分配(栈式,堆式)2、不同的程序结构应采用何种分配方案?如何实现此方案?作业(1)对以下的Pascal程序画出过程C第二次被调用时的运行栈,控制链和存取链.(2)如果把存取链改成DIS
3、PLAY,重新做(1)programenv;procedureA;varx:integer;procedureB;procedureC;beginx:=2;Bend;(c过程)beginCend;(B过程)beginBend;(A过程)beginAend;(main)程序的结构为:envABCcallBcallCcallBcallA程序的调用过程为:env→A→B→C→B→C程序的结构为:envABCcallBcallCcallBcallA第八章语法制导翻译和中间代码生成1、属性文法,语法制导定义的形式,综合
4、属性,继承属性的概念。2、中间代码的表示形式。3、根据语法制导翻译的方法,写出产生式相应的语义规则。例B:=2Pi(R+r)(R-r)(5)B:=T2T3(,2,Pi,T0)(+,R,r,T1)(,T0,T1,T2)(-,R,r,t3)(,T2,T3,B)或(1)T0:=2Pi(2)T1:=R+r(3)T2:=T0T1(4)T3:=R-r逆波兰式:B2PiRr+Rr-=第七章LR分析法1、构造识别文法活前缀的DFAM。2、构造LR(0),SLR(1),LR(1)分析表。3、LR(0),SLR(1),LR(1)
5、文法的概念。4、用LR(0),SLR(1),LR(1)对输入串进行分析。5、项目的分类:移进项目、待约项目、归约项目、接受项目。6、项目的冲突:归约—移进冲突、归约—归约冲突。例:P1663LR分析表的构造算法1、GO(Ik,a)=Ij,aVT,则ACTION[k,a]=Sj。2、若A•Ik,则对任何aVT(或#),则ACTION[k,a]=rj;其中j为产生式A的编号。(LR(0)若A•Ik,则对任何aFOLLOW(A),则ACTION[k,a]=rj;其中j为产生式A的编号。(S
6、LR(1))若项目(A•,a)属于Ik,则置ACTION[k,a]=rj;其中j为产生式A的编号;(LR(1))3、若S`S•Ik,则ACTION[k,#]=acc。若(S`S•,#)属于Ik,则置ACTION[k,#]=acc;4、若GO(Ik,A)=Ij,AVN,则GOTO[k,A]=j;5、其余为“出错标志”。P168、16给定文法:S→doSorSdoSS;Sact(1)构造识别该文法活前缀的DFA(2)该文法是LR(0)吗?是SLR(1)吗?说明理由(3)构造SLR(1)分析表解:扩
7、充文法后为:(0)E→S(1)S→doSorS(2)S→doS(3)S→S;S(4)S→act0:E→•SS→•doSorSS→•doSS→•S;SS→•act1:ES•SS•;S3:Sact•2:Sdo•SorSSdo•SS→•doSorSS→•doSS→•S;SS→•actdoactS4:SS;•SS→•doSorSS→•doSS→•S;SS→•act;do6:SS;S•S→S•;SSS5:SdoS•orSSdoS•S→S•;Sor7:SdoSor•SS→•doSorSS→•doSS→
8、•S;SS→•actactact;S8:SdoSorS•S→S•;S;doact3do;例:有如下文法:1.ZS2.SL=R3.SR4.LaR5.Lb6.RL按照求LR(1)项目集规范族的算法,求G(S)文法的项目集族解:求初态项目集I0:从(Z•S,#)项目开始求闭包得:0ZSSL=RSRLaRLbRL###=#=##1ZS#2SL=RRL##6