木材炭化设备

木材炭化设备

ID:45033555

大小:350.50 KB

页数:9页

时间:2019-11-08

木材炭化设备_第1页
木材炭化设备_第2页
木材炭化设备_第3页
木材炭化设备_第4页
木材炭化设备_第5页
资源描述:

《木材炭化设备》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第八章目标代码生成一概述1>目标代码的形式(1)能立即执行的目标代码;(2)待装配的浮动目标代码;(3)汇编语言目标代码.2>目标代码生成原则(1)生成的目标代码短而高效;(2)充分利用寄存器,减少访问内存的次数.二计算机模型假设计算机只有四种类型的机器指令:指令类型指令形式意义直接地址型opRi,M(Ri)op(M)→Ri寄存器型opRi,Rj(Ri)op(Rj)→Ri变址型opRi,C(Rj)(Ri)op((Rj)+C)→Ri间址型opRi,*M(Ri)op((M))→RiopRi,*Rj(Ri

2、)op((Rj))→RiopRi,*C(Rj)(Ri)op(((Rj)+C))→Ri2三代码生成器及辅助信息基本思想:当生成计算某变量值的目标代码时,尽量让该变量的值保存在某个寄存器中,直到该寄存器要用来存放其它变量的值或者基本块结束之前不再引用该变量的值,才把该变量的值存放到存储器中.为了能知道某变量的值是否在寄存器中,在那个寄存器中,是否该送回内存中等,需要一些辅助信息.1>待用信息当翻译到四元式A:=BopC时,我们需要知道基本块内后面的四元式是否还引用ABC,是哪些四元式引用?定义:设四元式

3、(i)对A定值且到达四元式(j),四元式(j)中引用A,则称j是四元式i的变量A的待用信息;满足上述定义的所有j,构成了A的待用信息集.3采用如下方式表示待用信息集,为每个四元式建立一个如下的表项:定值名指针引用名1指针引用名2指针A*B*C*A*BNilCNil通过链表把A的所有待用信息连接起来.当执行到A:=BopC时,就可以检查待用信息链,确定ABC在该四元式之后是否还引用(若为Nil,表示不再引用,此时,应将非活跃变量的寄存器释放,存入内存中).42>寄存器描述假设系统可以使用的寄存器为:R

4、1,R2,........,Rn每个寄存器都需要描述是否被占用,被哪些变量占用?假设RVALUE[Ri]为集合类型,用于描述寄存器Ri的使用情况,也即哪些变量同时占用了Ri.3>变量描述在翻译过程中,应了解基本块中的每个变量的存储状况,确定变量的值是在寄存器中还是在内存中?假设AVALUE[A]为集合类型,用于描述变量的存储情况:AVALUE[A]={Ri}A的有效值在寄存器中;{M}A的有效值在内存中;{Ri,M}均有效.54>代码生成算法下面,仅讨论一般情形A:=BopC的代码翻译,GetReg

5、(A:=BopC)函数返回一个寄存器R,存放变量A的值.代码生成算法:(对四元式A:=BopC)(1)令R=GetReg(A:=BopC);(2)由AVALUE[A],AVALUE[B]确定变量BC值的有效存储位置B’,C’(3)若B’=R生成机器指令opB’,C’否则生成机器指令movR,B’opR,C’若B’=R,则删除AVALUE[B]中的R;若C’=R,则删除AVALUE[C]中的R;令AVALUE[A]={R};RVALUE[R]={A};6(4)若B的值在基本块内不再引用,且AVALUE

6、[B]={Ri}则产生目标指令:movRi,B;删除AVALUE[B]中的Ri;删除RVALUE[Ri]中的B;///释放寄存器Ri.(5)若C的值在基本块内不再引用,且AVALUE[C]={Ri}则产生目标指令:movRi,C;删除AVALUE[C]中的Ri;删除RVALUE[Ri]中的C;///释放寄存器Ri.(6)返回75>GetReg(A:=BopC)算法(1)若B的值在R中,且RVALUE[R]只含B,且(A=B或B的值在基本块内不再引用并且B的值已存入内存中)则return(R);(2)

7、否则,若有尚未分配的R则return(R);(3)否则,从已分配的寄存器中选择一R,for(RVALUE[R]中的每一变量V)do{若V的值不在内存中,则{MovV,R;AVALUE[V]={M};}}RVALUE[R]={};return(R)89

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

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

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