7 北航本科编译原理课件 张莉

7 北航本科编译原理课件 张莉

ID:34049345

大小:184.75 KB

页数:14页

时间:2019-03-03

7 北航本科编译原理课件 张莉_第1页
7 北航本科编译原理课件 张莉_第2页
7 北航本科编译原理课件 张莉_第3页
7 北航本科编译原理课件 张莉_第4页
7 北航本科编译原理课件 张莉_第5页
资源描述:

《7 北航本科编译原理课件 张莉》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第七章源程序的中间形式••波兰表示波兰表示••N-元表示N-元表示••抽象机代码抽象机代码北京航空航天大学计算机学院17.1波兰表示一般编译程序都生成中间代码,然后再生成目标代码,主要优点是可移植(与具体目标程序无关),且易于目标代码优化。有多种中间代码形式:波兰表示N-元组表示抽象机代码波兰表示算术表达式:F*3.1416*R*(H+R)转换成波兰表示:F3.1416*R*HR+*赋值语句:A:=F*3.1416*R*(H+R)波兰表示:AF3.1416*R*HR+*:=北京航空航天大学计算机学院2#a+b#ab++操作符栈##优先

2、级最低算法:设一个操作符栈;当读到操作数时,立即输出该操作数,当扫描到操作符时,与栈顶操作符比较优先级,若栈顶操作符优先级高于栈外,则输出该栈顶操作符,反之,则栈外操作符入栈。北京航空航天大学计算机学院3if语句的波兰表示label1label2if语句:ifthenelse12波兰表示为:

3、>的转移2北京航空航天大学计算机学院4波兰表示为:

4、x+(y+z)第三个三元式中的操作数(1)(1)*,w,x(2)表示第(1)和第(2)+,y,z(2)条三元式的计(3)+,(1),(2)算结果。北京航空航天大学计算机学院6条件语句的三元式:ifx>ythenz:=x;elsez:=y+1;(1)-,x,y(2)BMZ,(1),(5)其中:(3):=,z,xBMZ:是二元操作符,测试第二(4)BR,,(7)个域的值,若≤0,则按(5)+,y,1第3个域的地址转移,(6):=,z,(5)若>0,则顺序执行。(7)BR:一元操作符,按第3个域:作无条件转移。:北京航空航天大学计算机学院7

5、使用三元式不便于代码优化,因为优化要删除一些三元式,或对某些三元式的位置要进行变更,由于三元式的结果(表示为编号),可以是某个三元式的操作数,随着三元式位置的变更也将作相应的修改,很费事。间接三元式:为了便于在三元式上作优化处理,可使用间接三元式三元式的执行次序用另一张表表示,这样在优化时,三元式可以不变,而仅仅改变其执行顺序表。北京航空航天大学计算机学院8例:A:=B+C*D/EF:=C*D用间接三元式表示为:操作三元式1.(1)(1)*,C,D2.(2)(2)/,(1),E3.(3)(3)+,B,(2)4.(4)(4):=,A,(

6、3)5.(1)(5):=,F,(1)6.(5)北京航空航天大学计算机学院9四元式表示操作符操作数1操作数2结果结果:通常是由编译引入的临时变量,可由编译程序分配一个寄存器或主存单元。例:(A+B)*(C+D)-E+,A,B,T1式中T1,T2,T3,T4+,C,D,T2为临时变量,由四*,T1,T2,T3元式优化比较方便一,T3,E,T4北京航空航天大学计算机学院107.3抽象机代码许多pascal编译系统生成的中间代码是一种称为P-code的抽象代码,P-code的“P”即“Pseudo”抽象机:寄存器保存程序指令的存储器堆栈式数据

7、及操作存储北京航空航天大学计算机学院11寄存器有:1.PC-程序计数器2.NP-New指针,指向“堆”的顶部。“堆”用来存放由New生成的动态数据。3.SP-运行栈指针,存放所有可按源程序的数据声明直接寻址的数据。4.BP-基地址指针,即指向当前活动记录的起始位置指针。5.其他,(如MP-栈标志指针,EP-极限栈指针等)北京航空航天大学计算机学院12计算机的存储大致情况如下:栈底运行栈P-code指令BP当前模块活SP动记录(数据段)NPPC堆堆底常量区程序指令存储器北京航空航天大学计算机学院13运行P-code的抽象机没有专门的运算

8、器或累加器,所有的运算(操作)都在运行栈的栈顶进行,如要进行d:=(a+b)*c的运算,生成P-code序列为:栈底:运行栈取aLODa取bLODba单元+ADDb单元取cLODcc单元*MULSPd单元送dSTOdaP

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

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

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