




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,.,第5章语法制导的翻译,5.2.3假设我们有一个产生式。A,B,C,D这四个非终结符号都有两个属性:s是一个综合属性,而i是一个继承属性。对于下面的每组规则,指出(i)这些规则是否满足S属性定义的要求。(ii)这些规则是否满足L属性定义的要求。(iii)是否存在和这些规则一致的求值过程?1)A.s=B.i+C.s不满足S属性定义,满足L属性定义2)A.s=B.i+C.s和D.i=A.i+B.s不满足S属性定义,满足L属性定义3)A.s=B.s+D.s满足S属性定义,满足L属性定义4)A.s=D.i,B.i=A.s+C.s,C.i=B.s和D.i=B.i+C.i不满足S属性定义,不满足L属性定义,2,.,5.2.4这个文法生成了含“小数点”的二进制:设计一个L属性的SDD来计算S.val,即输入串的十进制数值。比如,串101.11应该被翻译为十进制数5.635。提示:使用一个继承属性L.side来指明一个二进制位在小数点的哪一边。,.,3,为了求小数部分的值,引入L的综合属性b记录2的L的位数次幂值(2lengthofL)SL1.L2S.val=L1.val+L2.val/L2.b;SLS.val=L.val;LL1BL.val=L1.val*2+B.val;L.b=L1.b*2;LBL.val=B.val;L.b=2;B0B.val=0;B1B.val=1;,4,.,5.3.1下面是涉及运算符+和整数或浮点运算分量的表达式的文法。区分浮点数的方法是看它有无小数点。1)给出一个SDD来确定每个项T和表达式E的类型。2)扩展(1)中得到的SDD,使得它可以把表达式转换成为后缀表达式。使用一个单目运算符intToFloat把一个整数转换为相等的浮点数。,.,5,.,6,()设code为综合属性,代表各非终结符的代码属性type为综合属性,代表各非终结符的类型属性inttoreal把整型值转换为相等的实型值vtochar将数值转换为字符串,.,7,.,8,.,9,5.3.3给出一个SDD对x*(3*x+x*x)这样的表达式求微分。表达式中涉及运算符+和*,变量x和常量。假设不进行任何简化,也就是说,比如3*x将被翻译为3*1+0*x。exp为原表达式的字符串,s为求导后的字符串。|为串联接符。,.,10,.,11,12,.,5.4.3下面的SDT计算了一个由0和1组成的串的值。它把输入的符号串当作按照正二进制数来解释。改写这个SDT,使得基础文法不再是左递归的,但仍然可以计算出整个输入串的相同的B.val的值。,.,13,非终结符D的综合属性b表示二进制数的位数,val表示对应的十进制数的数值。消除左递归后如下:,.,14,第6章中间代码生成,6.1.1为下面的表达式构造DAG(x+y)-(x+y)*(x-y)+(x+y)*(x-y),.,15,6.2.1将算术表达式a+-(b+c)翻译成1)抽象语法树2)四元式序列3)三元式序列4)间接三元式序列,.,16,1)抽象语法树:,.,17,2)四元式序列:3)三元式序列:4)间接三元式序列:,18,.,6.4.1向图6-19的翻译方案中加入对应于下列产生式的规则:1)2),.,19,6.4.2使用图6-20中的增量式翻译方案重复练习6.4.1,在增量方式中,gen不仅要构造出一个新的三地址指令,还要将它添加到至今为止已生成的指令序列之后。,.,20,6.4.3使用使用图6-22所示的翻译方案来翻译下列赋值语句:2)x=aij+bij假设w1为数组a的第一维的宽度,w2为数组b的第一维的宽度,整数的宽度为w。t1=i*w1;t6=j*w;t2=j*w;t7=t5+t6;t3=t1+t2;t8=bt7;t4=at3;t9=t4+t8;t5=i*w2;x=t9;,.,21,6.6.1在图6-30的语法制导定义中添加处理下列控制流构造的规则:1)一个repeat语句,repeatSwhileB2)一个for循环语句,for(S1;B;S2)S3,S-repeatS1whileBbegin=newlabel()S1.next=newlabel()B.true=beginB.false=S.nextS.code=label(begin)|S1.code|label(S1.next)|B.code,.,22,S-for(S1;B;S2)S3S1.next=newlabel()B.true=newlabel()begin=newlabel()B.fale=S.nextS2.next=S1.nextS3.next=beginS.code=S1.code|label(S1.next)|B.code|label(begin)|S2.code|gen(gotoS1.next)|label(B.true)|S3.code|gen(gotobegin),.,23,6.7.7使用图6-37中的翻译方案翻译下列表达式。给出每个子表达式的truelist和falselist。你可以假设第一条被生成的指令的地址是100。1)a=bif(n2)return1;s=f(n-1);t=f(n-2);returns+t;,图7-9,活动树,.,26,第1个f(1)调用即将返回,第5个f(1)调用即将返回,.,27,7.2.5在一个通过引用传递参数的语言中,有一个函数f(x,y)完成下面的计算:x=x+1;y=y+2;returnx+y;如果将a赋值为3,然后调用f(a,a),那么返回值是什么?函数返回值为:12此时a的值为:6,.,28,第8章代码生成,8.2.1假设所有的变量都存放在内存中,为下面的三地址语句生成代码:1)x=1LDR1,1STx,R13)x=a+1LDR1,aADDR1,R1,1STx,R1,.,29,8.2.2假设a和b是元素为4字节值的数组,为下面的三地址语句序列生成代码。2)三个语句序列x=aiy=biz=x*y,LDR1,iMULR1,R1,4LDR2,a(R1)STx,R2LDR3,iMULR3,R3,4LDR4,b(R3)STy,R4LDR5,xLDR6,yMULR5,R5,R6STz,R5,.,30,8.2.4假设x,y和z存放在内存位置中,为下面的语句序列生成代码:ifxygotoL1z=0gotoL2L1:z=1,LDR1,xLDR2,ySUBR1,R1,R2BLTZR1,L1LDR3,0STz,R3JMPL2L1:LDR4,1STz,R4,.,31,8.2.6确定下列指令序列的代价。1)LDR0,y2LDR1,z2ADDR0,R0,R11STx,R02总代价:73)LDR0,c2LDR1,i2MULR1,R2,82STa(R1),R02总代价:8,.,32,8.3.3假设使用栈式分配,且假设a和b都是元素大小为4字节的数组,为下面的三地址语句生成代码。2)三个语句序列x=aiy=biz=x*y,LDR1,iMULR1,R1,4ADDR1,R1,SPLDR2,a(R1)STx(SP),R2LDR3,iMULR3,R3,4ADDR3,R3,SPLDR4,b(R3)STy(SP),R4LDR5,x(SP)LDR6,y(SP)MULR5,R5,R6STz(SP),R5,.,33,8.5.1为下面的基本块构造DAG。d=b*ce=a+bb=b*ca=e-d,1)只有a在基本块的出口处活跃:d=b*ce=a+ba=e-d,2)a,b,c在基本块的出口处活跃:e=a+bb=b*ca=e-b,.,34,8.5.8假设一个基本块由下面的C语言赋值语句生成:x=a+b+c+d+e+f;y=a+c+e;1)给出这个基本块的三地址语句(每个语句只做一次加法)。t1=a+bt2=t1+ct3=t2+dt4=t3+et5=t4+fx=t5t6=a+ct7=t6+ey=t7,.,35,2)假设x和y都在基本块的出口处活跃,利用加法的结合律和交换律来修改这个基本块,使得指令个数最少。把原始的赋值语句进行调整:x=a+c+e+b+d+fy=a+c+e对应的三地址语句序列:,t1=a+ct2=t1+et3=t2+bt4=t3+dt5=t4+fx=t5t6=a+ct7=t6+ey=t7,DAG,.,36,优化后的三地址语句序列:t1=a+cy=t1+et3=y+bt4=t3+dx=t4+f,优化后的目标代码序列:LDR1,aLDR2,cADDR1,R1,R2LDR2,eADDR1,R1,R2STy,R1LDR2,bADDR1,R1,R2LDR2,dADDR1,R1,R2LDR2,fADDR1,R1,R2ST
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 理化生实验试题及答案
- 电商赋能农业产业链的实践研究试题及答案
- 金融科技赋能普惠金融:2025年应用效果实证分析报告
- 电商助力农业创新考试试题及答案
- 职称教育考试试题及答案
- 2025民航招飞英语试题及答案
- 新能源汽车技术市场需求的响应机制研究试题及答案
- 2025护士条例考试试题及答案
- 演讲技能测试题及答案
- 电能表重点试题及答案
- 医用高分子材料行业发展趋势
- 2024年医学高级职称-皮肤与性病学(医学高级)历年考试高频考点试题附带答案
- 中国公民健康素养66条知识讲座课件
- 新教师入职培训新学期新教师入职培训课件
- 2023许昌职业技术学院教师招聘考试真题汇总
- Spring Boot从入门到实战(知识点+实例)
- 《企业会计准则第 25 号-保险合同》应用指南
- 手术物品清点标准操作程序-手术物品清点流程
- 武术基本功五步拳 教案6篇
- 超构表面透镜在生物医学成像领域应用
- 小水滴的诉说省公开课一等奖新名师优质课比赛一等奖课件
评论
0/150
提交评论