- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
两种计算方式对不包含布尔函数调用的式子没有什么差别,但若布尔式中含有布尔函数调用,并且这种函数调用引起副作用(指对全局量的赋值时),两种计算方法未必等价。 * * Jnz: jump if not zero * 图中的四元式为由if语句的条件E产生的四元式。 E.true E为真时,链的链头单元 E.False E为假时,链的链头单元 等S1出来了,就可以填Li链 当S2出来了,就可以填Ln链 * Nextquad:四元式的计数器 * 讲完该页 * Id1和id2为算术量 * * 讲完该页 * Id1和id2为算术量 * E.Begin代表E的代码的第一条指令 * 解释(8): 例: While E do S1; S 在“S1;”后应进行回填 S:语句 L:语句表 A:赋值语句 E:表达式 * 讲到此例 * S→While M1 E do M2 S1 { backpatch (S1.nextlist,M1.quad); backpatch (E.truelist,M2.quad); S.nextlist:=E.falselist; emit(‘j,_,_,’ M1.quad)} * S→While M1 E do M2 S1 { backpatch (S1.nextlist,M1.quad); backpatch (E.truelist,M2.quad); S.nextlist:=E.falselist; emit(‘j,_,_,’ M1.quad)} M→ε { M.quad:=nextquad } 将S1.nextlist中所有的转移指令的目标标号均填为M1.quad * (6)S→begin L end { S.nextlist:=L.nextlist } (7)S→A { S.nextlist:=makelist() } (8)L→L1;M S { backpatch(L1.nextList,M.quad); L.nextlist:=S.nextlist } (9)L→S { L.nextlist:=S.nextlist } 将S.nextlist初始化为空表 L1之后的语句应是S的开始。因此L1.nextlist中相应的转移指令的标号应是S的开始位置 * if cd then x:=y+z else x:=y-z; 翻译过程: (1)E→id1 relop id2 (cd) { E1.truelist:=100, E1.falselist:=101 100 (j ,c, d, 0 ) 101 (j, _, _, 0 ) } (2)M1→ε { M1quad:=102 } * (2)S→if E then M1 S1 N else M2 S2 { backpatch(E.truelist,M1.quad); backpatch(E.falselist,M2.quad); S.nextlist:=merge(S1.nextlist, N.nextlist, S2.nextlist)} (3)M→ε { M.quad:=nextquad } (4)N→ε { N.nextlist:=makelist(nextquad); emit(‘j,_,_,0’)} 该链中包含由N的语义动作所产生的跳转指令标号,为后边回填使用 * if cd then x:=y+z else x:=y-z; (3)E2→E3+E4 A→id:=E2 (x:=y+z) { 102(+,y,z,T1) 103(:=,T1,_,x)} (4)S1→A { S1.nextlist:=null } (5)N→ε {N.nextlist:=104 104(j,_,_,0)} (6)M2→ε { M2.quad:=105 } 之前四元式: 100(j,c,d,0) 101(j,_,_,0) * if cd then x:=y+z else x:=y-z; (7)E5→E6-E7 A→id:=E5 (x:=y-z) { 105(_, y ,z, T2) 106(:=, T2, _, x)} (8)S2→A { S2.nextlist:=null } 之前四元式: 100(j,c,d,0) 101(j,_,_,0) 102(+,y,z,T1) 103(:=,T1,_,x) 104(j,_,_,0) * if cd then x:=y+z else x:=y-z; (9)S→if E then M1 S1 N else M2 S2 {backpatch(100,102); 之前四元式: 100(j,c,d,0 ) 101
您可能关注的文档
最近下载
- 纺织企业(印染厂)全套组织架构、部门岗位职能设计及全套企业管理制度汇编(拿来即用).docx
- 电网物资质量检测能力评价导则(试行).docx
- 贵州省教科院贵州省教育学会教学设计论文评选结果.docx VIP
- 中石化三井化学7.5万吨年三元乙丙橡胶合资项目_环评简本.pdf VIP
- 泌尿外科护理一科一品汇报.pptx VIP
- 消防设备项目投标方案投标文件(技术方案).doc
- 2.6.1生物的分类课件(共38张PPT)——初中生物学苏教版(2025)七年级上册(含音频+视频).pptx VIP
- 教育理论基础知识大全.docx VIP
- 2025年全国应急管理普法知识竞赛测试试卷含答案.docx VIP
- 初三英语家长会PPT课件.pptx VIP
文档评论(0)