11目标代码生成.ppt

11目标代码生成.ppt

ID:48141785

大小:266.00 KB

页数:24页

时间:2020-01-17

11目标代码生成.ppt_第1页
11目标代码生成.ppt_第2页
11目标代码生成.ppt_第3页
11目标代码生成.ppt_第4页
11目标代码生成.ppt_第5页
资源描述:

《11目标代码生成.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、目标代码生成编译技术之十一主讲鲁斌源程序编译前端中间代码代码优化中间代码代码生成器目标程序符号表代码生成器的位置2代码生成器的输入包括中间代码和符号表中的信息目标代码一般有以下三种形式:能独立执行的机器语言代码,所有地址均已定位(代真)待装配的机器语言模块。当需要执行时,由连接装入程序把它们和某些运行程序连接起来,转换成能执行的机器语言代码汇编语言代码,尚须经过汇编程序汇编,转换成可执行的机器代码代码生成器着重考虑两个问题一是如何使生成的目标代码较短二是如何充分利用计算机的寄存器,减少目标代码中访问存储单元的次数这两个问题直接影响代码的执行速度31基本问题代码生成器的

2、输入:中间代码和符号表信息目标程序、指令选择、寄存器分配、计算顺序选择42目标机器模型假定一个计算机有N个通用寄存器R0,R1…,Rn-1,Op表示运算符,M表示内存单元,c表示常数,*表示间接寻址,变量名表示变量所在单元指令形式有以下四种:类型指令形式意义(设op是二目运算)直接地址型OpRi,M(Ri)op(M)=>Ri寄存器型OpRi,Rj(Ri)op(Rj)=>Ri变址型OpRi,c(Rj)(Ri)op((Rj)+C)=>Ri间接型OpRi,*MOpRi,*RjOpRi,*c(Rj)(Ri)op((M))=>Ri(Ri)op((Rj))=>Ri(Ri)op((

3、(Rj)+c))=>Ri5如果op是一目运算符,则"opRi,M"的意义为:op(M)=>Ri,其余类型可类推指令的意义说明:指令意义指令意义LDRi,B把B单元的内容取到寄存器R,即(B)=>RiJBJ≤X如CT=0或CT=1转X单元JX无条件转到X单元J=X如CT=1转X单元CMPA,B比较A,B两个单元的内容,将内部特征寄存器CT置成相应状态(<:0,=:1,>:2)J≠X如CT≠1转X单元J>X如CT=2转X单元J≥X如CT=2或CT=1转X单元63一个简单的代码生成器简单的代码生成器

4、(基本块内):输入四元式的中间代码,输出计算机的目标代码在一个基本块范围内考虑如何充分利用寄存器的问题73.1寄存器分配的原则尽可能地让该变量的值保留在寄存器中,尽可能引用变量在寄存器中的值对于在基本块内不再被引用的变量所占用的寄存器应尽早释放,以提高寄存器的利用率8例如:T1:=B+C T2:=T1*D A:=T2+E考虑了效率和充分利用寄存器的问题之后,代码生成器可以生成如下代码:(1)LDR,B(2)ADDR,C(3)MULR,D(4)ADDR,E(5)STR,A93.2待用信息链表法目的:在基本块内还要被引用的变量尽可能保存在寄存器内待用信息:若在一个基本块中

5、,变量A在四元式i中被定值,在i后面的四元式j中要引用A值,且从i到j间没有A的其它定值,这时称j是四元式i中对变量A的待用信息或下次引用信息,同时也称A是活跃的10若A被多次引用则可构成待用信息链与活跃信息链可从基本块的出口由后向前扫描,对每个变量建立相应的待用信息链和活跃信息链i:A:=………………….j:…:=…A…j是i中A的下次引用信息(在基本块之内)。11计算变量待用信息的算法开始时,把基本块中各变量的符号表表项中的待用信息域置为“非待用”,并根据变量在基本块出口之后是否活跃,将活跃信息域置为“活跃”或“非活跃”从基本块出口到基本块入口由后向前依次处理各个

6、三地址语句。对每一个三地址语句i:x:=yopz,依次执行下述步骤:把当前符号表中变量x的待用信息和活跃信息附加到语句i上把符号表中x的待用信息和活跃信息分别置为“非待用”和“非活跃”12把当前符号表中变量y和z的待用信息和活跃信息附加到语句i上把符号表中y和z的待用信息均置为i,活跃信息均置为“活跃”注意:以上次序不可颠倒,因为y和z也可能是x例:W是基本块出口的活跃变量T:=A-BU:=A-CV:=T+UW:=V+U13(1)T:=A+B(2)U:=A-C(3)V:=T+U(4)W:=V+U名字待用活跃T无非A无非B无非C无非W无活U无非V无非{W:无,活;U,V

7、:无,非}无非44活活{U,V:4,活;T:无,非}无非3活活3{U:3,活;A,C:无,非}无非22活活{T:3,活;A:2,活;B:无,非}无非11活活14例11.1:若用A,B,C,W表示变量,用T,U,V表示中间变量,有四元式如下:(1)T:=A-B(2)U:=A-C(3)V:=T+U(4)W:=V+U设W是基本块出口的活跃变量,其名字表中的待用信息和活跃信息如下表,用“∧”表示“非待用”“非活跃”,用“Y”表示活跃。(1)(2)(3)(4)表示四元式序号。15待用信息和活跃信息:变量名待用信息/活跃信息初值待用信息链/活跃信息链T∧,∧3,

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

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

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