资源描述:
《最新学时数及其分布PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、学时数及其分布代码生成器的输入包括中间代码和符号表中的信息。目标代码一般有以下三种形式:(1)能独立执行的机器语言代码,所有地址均以定位(代真)。(2)待装配的机器语言模块。当需要执行时,由连接装入程序把它们和某些运行程序连接起来,转换成能执行的机器语言代码。(3)汇编语言代码,尚须经过汇编程序汇编,转换成可执行的机器代码。代码生成器着重考虑两个问题:一是如何使生成的目标代码较短;另一个是如何充分利用计算机的寄存器,减少目标代码中访问存储单元的次数。这两个问题直接影响代码的执行速度。例题与习题解答[
2、例11。1]假设只有R0和R1两个寄存器,对赋值语句d=(a-b)+(a-c)+(a-c)生成目标代码。并写出寄存器描述数组RVALUE和变量地址描述数组AVALUE.该赋值语句的三地址序列:t:=a-bt1:=a-ct2:=t+t1d:=t1+t2将此代码看成一基本块,并设在基本块末尾,变量d是活跃的。生成目标代码表如图:中间代码目标代码RVALUEAVALUEt:=a-bLDR0,aR0含tt在R0中SUBR0,bt1:=a-cLDR1,aR0含tt在R0中SUBR1,cR1含t1t1在R1中t
3、2:=t+t1ADDR0,R1R0含t2t2在R0中R1含t1t1在R1中d:=t1+t2ADDR0,R1R0含dd在R0中STR0,dd在R0和存储器中[例11。2](k3)假设R0,R1和R2为可用寄存器,试对以下各表达式分别生成最优目标代码。A+(B+(C*(D+E/F+G)*H))+(I*J)解:首先生成三地址中间代码序列:T1:=E/FT2:=D+T1T3:=G+T2T4:=C*T3T5:=H*T4T6:=B+T5T7:=A+T6T8:=I*JT9:=T7+T8最优的目标代码:LDR0,E
4、DIVR0,FADDR0,GMUL R0,HMULR0,CADDR0,BADDR0,ALDR1,IMULR1,JADDR0,R1[例11。3](K1)对以下中间代码序列G:T1:=B–CT2:=A*T1T3:=D+1T4:=E–FT5:=T3*T4W:=T2/T5假设可用寄存器为R0和R1,W是基本块出口的活跃变量,用简单代码生成算法生成目标代码,同时列出代码生成过程中的寄存器描述和变量地址描述。中间代码目标代码RVALUEAVALUET1:=B-CLDR0,BR0含T1T1在R0中SUBR0,CT
5、2:=A*T1MULR0,AR0含T2T2在R0中STR0,T2T2同时在R0和存储器中T3:=D+1LDR1,DR1含T3T3在R1中ADDR1,#1T4:=E-FLDR0,ER0含T4T4在R0中SUBR0,FT5:=T3*T4MULR1,R0R1含T5T5在R1中LDR0,T2R0含T2T2在R0和存储器中W:=T2/T5DIVR0,R1R0含WW在R0中STR0,WW在R0和存储器中第十二章并行编译基础并行计算机是近二十几年来发展迅速的一类计算机。并行编译系统已经成为了现代高性能计算机系统中
6、一个重要的部分。并行程序设计主要有两种途径,即使用并行程序设计语言编写并行程序,或将串行程序并行化。因此,并行编译系统就是能够处理并程序设计语言,能够实现串行程序并行化。具有并行优化能力的编译系统。在这