- 1、本文档共98页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
图6.18给出开关语句的一种翻译结果(中间代码),其中 把所有的测试都放在最后,以便目标代码生成阶段产生高 质量的目标指令 三.for循环语句 for i:=E1 step E2 util E3 do S1 上述循环句的ALGOL意义等价于: i:= E1; goto OVER; AGAIN:i:=i+E2; OVER: if i≤E3 then begin S1;goto AGAIN end; 改写成如下的产生式: F1 for i:=E1 F2 F1 step E2 F3 F2 until E3 S F3 do S1 下面是这些产生式相应的语义动作: F1 for i:=E1 {emit(entry(i),’:=‘,E1.place); F1.place:=entry(i);/*保存控制变量在符号表中的位置*/ F1.chain:=nextstat; emit(‘goto’-); /*goto OVER*/ F1.codebegin:=nextstat;/*保存AGAIN的地址*/ } F2 F1 step E2 {F2.codebegin:=F1.codebegin;/*保存AGAIN的地址*/ F2.place:=F1.place;/*保存控制变量在符号表中的位置*/ emit(F1.place ‘:=‘,E2.place,’+’F1.place); backpatch(F1.chain,nextstat);/*回填上面的goto OVER*/} F3 F2 until E3 {F3.codebegin:=F2.codebegin; q:=nextstat; emit(‘if’ F2.place,’ ≤’,E3.place,’goto’q+2); /*若i ≤ E3转去执行循环体的第1个四元式*/; F3.chain:=nextstat; emit(‘goto’-);/*转离循环*/} S F3 do S1 /*这里是语句S1的相应代码*/ {emit(‘goto’ F3.codebegin) /*goto AGAIN*/; backpatch(S1.chain,F3.codebegin); S.chain:=F3.chain/;*转离循环的转移目标留待处理外层 S时再回填*/} 例如,循环语句 for I:=1 step 1 until N do M:=M+I将被翻译 成如下的四元式序列: 100 I:=1 101 goto 103 102 I:=I+1 103 if I≤N goto 105 104 goto 108 105 T:=M+I 106 M:=T 107 goto 102 108 四.出口语句 exit、break,是一种结构化的方式跳出循环而设置的 语句,它们的作用是引起外层循环的终止 为处理exit语句,编译程序对每个循环可使用一个称为 “循环描述符”的量来记录一些必要的信息 exit语句所指的循环可以是无名的,即是最内层循环, 可以使用一指针currentloop指向其描述符,所有打开 循环的描述符使用栈式方式存储 五.goto语句 带标号语句的形式是 L:S;goto语句的形式是goto L 如果goto L是一个向上转移的语句,那么L是定义的 如果goto L是一个向下转移的语句,那么L尚未定义 例:写出下列表达式逆波兰表示 (1)x:=a+b*((a+c)*d+e) 解: Xabac+d*e+*+:= (2)(x+y)z or(a0)and (8+z)3 解: xy+za08z+3and or (3)If a0 then x:=x+1 else x:=4*(x-1) 解: a0p1 jez xx1+:=p2 jump x 4 x 1-*:= 如序号 1开始:p1为13,p2为20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 a 0 13 jez x x 1 + := 20 jump x 4 x 1 17 18 19 20 - * := 二.三元式和树形表示 每个三元式的组成:算符op,第1运算对象ARG1,第2运算对象ARG2 例如:a:=b*c+b*d (1)(*, b,c) (2)(* ,b,d) (3)(+ ,(1),(2)) (4)(:= ,(3),a) 树形表示是三元式表示 的翻版,上述三元式可 表示成右边的树表示: 表达式的树形表示很容
您可能关注的文档
- 七年级地理上册期末测评(二)新版新人教版104.docx
- 钳工工艺学习题(及解答).docx
- 世界经济学知识点总结.docx
- 数据结构(本科)期末综合练习二(填空与判断题).docx
- 网球专项理论练习卷一.docx
- 我的梦想英语作文120字.docx
- 尹定邦-设计学概论 练习题(第5-7章).docx
- 责任作文之英语作文责任心的重要性.docx
- 责任作文之有关责任的中考满分作文.docx
- 中考作文题目分析.docx
- 二级建造师讲义《建设工程施工管理》[突破建筑类考试].ppt
- 福建省厦门市思明区东埔学校初中英语 现在进行时总复习课件 人教新目标版.ppt
- 福建省云霄县将军山学校八年级数学上册《第12章 全等三角形》复习课件 新人教版.ppt
- 福建省云霄县将军山学校九年级数学下册《28.2 解直角三角形》复习课件 新人教版.ppt
- 高考复习欧洲西部 通用.ppt
- 高考复习实用类文本阅读(一)新闻(6)1.ppt
- 高考复习实用类文本阅读之传记2.ppt
- 高考复习图文转换(课件+教案+练习,10份).ppt
- 高考生物总复习第九单元生物与环境931群落的结构与演替课件.ppt
- 高考物理一轮复习第五单元机械能53功能关系和能量守恒定律配套课件新人教版.ppt
文档评论(0)