编译原理PPT课件二 中间代码.ppt

编译原理PPT课件二 中间代码.ppt

ID:51619197

大小:114.50 KB

页数:11页

时间:2020-03-26

编译原理PPT课件二 中间代码.ppt_第1页
编译原理PPT课件二 中间代码.ppt_第2页
编译原理PPT课件二 中间代码.ppt_第3页
编译原理PPT课件二 中间代码.ppt_第4页
编译原理PPT课件二 中间代码.ppt_第5页
资源描述:

《编译原理PPT课件二 中间代码.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、何谓中间代码:源程序的一种内部表示,不依赖目标机的结构,易于机械生成目标代码的中间表示。为什么要此阶段主要优点是可移植(与具体目标程序无关),且易于目标代码优化中间代码的几种形式逆波兰、N-元表示(四元式、三元式)、树、抽象机代码第8章中间代码(源程序的中间形式)例:A+B*(C-D)+E/(C-D)^N逆波兰:ABCD-*+ECD–N^/+四元式:(1)(-CDT1)(2)(*BT1T2)(3)(+AT2T3)(-CDT4)(^T4NT5)(6)(/ET5T6)(7)(+T3T6T7)三元式:(1)(-CD)(2)(*B(1))(3)(+A

2、(2))(4)(-CD)(5)(^(4)N)(6)(/E(5))(7)(+(3)(6))if语句的波兰表示:有如下if语句:ifthenelse波兰表示为:BZBRBZ:二目操作符,如果的计算结果为0,则产生一个的转移,而label1是的头一个符号BR:一目操作符,它产生一个的转移,而是一个紧跟在后面的符号(即是if语句后的第一个语

3、句的头一个符号)8.1中间代码的几种形式——波兰表示由if语句的波兰表示可生成如下的目标程序框架:BZlabel1BRlabel2label1:label2:其他语言结构很容易将其翻译成波兰表示,使用波兰表示优化不是十分方便。波兰表示为:BZBRX-yBZ,label1Z:=XBR,label2Label:Z:=Y+1Label2:M=z+2:例:Ifx>ythenz:=xelsez:=y+1;M=z+2;有如下if语句:if

4、pr>thenelse在该表示中,每条指令由n个域所组成,通常第一个域表示运算符,其余操作符。常用的n元表示是:三元式四元式三元式:运算符左操作符右操作符表达式的三元式:w*x+(y+z)(1)*,w,x(2)+,y,z(3)+,(1),(2)第三个三元式中的操作数(1)(2)表示第(1)和第(2)条三元式的计算结果。8.1中间代码的几种形式——N-元表示条件语句的三元式:Ifx>ythenz:=x;elsez:=y+1;-,x,yBZ,(1),(5):=,Z,XBR,,(7)+,Y,1:=,Z,(5)::其中:B

5、Z:是二目(元)操作符,测试第二个域的值,若<0,则按第3个域的地址转移,若为正值则该指令作废。BR:一目(元)操作符,按第3个域作无条件转移。使用三元式不便于代码优化因为优化要删除一些三元式,或对某些三元式的位置要进行变更,由于三元式的结果(表示为编号),可以是某个三元式的操作数,随着三元式位置的变更也将作相应的修改,很费事。间接三元式:为了便于在三元式上作优化处理,可使用间接三元式三元式的执行次序用另一张表表示,这样在优化时,三元式可以不变,而仅仅改变其执行顺序表。例:A:=B+C*D/EF:=C*D用间接三元式表示为:操作三元式1.(1

6、)(1)*,C,D2.(2)(2)/,(1),E3.(3)(3)+,B,(2)4.(4)(4):=,A,(3)5.(1)(5):=,F,(1)6.(5)三元式的执行次序用另一张表表示,这样在优化时,三元式可以不变,而仅仅改变其执行顺序表。四元式表示:操作符操作数1操作数2结果结果:通常是由编译器分配的临时变量,可由编译程序做一个寄存器或主存单元。例1:(A+B)*(C+D)-E+,A,B,T1+,C,D,T2*,T1,T2,T3一,T3,E,T4式中,T1,T2,T3,T4为临时变量四元式优化比较方便简单赋值语句的(四元式)翻译四元式形式:t

7、=arg1oparg2语义属性:id.name,E.place函数:lookup(id.name);过程:emit(t:=arg1oparg2);t:newtemp;产生式和语义描述:(1)Aid=E{P=lookup(id.name);ifPnilthenemit(P“:=”E.place)elseerror}(2)EE1+E2{E.place:=newtemp;emit(E.place“:=”E1.place“+”E2.place)}(3)E-E1{E.place:=newtemp;emit(E.place“:=”“uminus”

8、E1.place)}(4)E(E1){E.place:=E1.place}(5)Eid{E.place:=newtemp;P:=lookup(id.name);

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

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

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