编译原理第十一章代码生成http://sei.nudt.edu.cn/cp网上教学系统:070606302:编译原理国防科技大学计算机系602教研室词法分析器语法分析器中间代码生成器优化段源程序单词符号语法单位四元式表格管理出错处理目标代码生成器四元式目标代码国防科技大学计算机系602教研室代码生成是把语法分析后或优化后的中间代码变换成目标代码。目标代码一般有以下三种形式:能够立即执行的机器语言代码,所有地址已经定位;待装配的机器语言模块。执行时,由连接装配程序把它们和某些运行程序连接起来,转换成能执行的机器语言代码;汇编语言代码。尚须经过汇编程序汇编,转换成可执行的机器语言代码。国防科技大学计算机系602教研室代码生成着重考虑的问题:如何使生成的目标代码较短;如何充分利用计算机的寄存器,减少目标代码中访问存贮单元的次数。如何充分利用计算机的指令系统的特点。国防科技大学计算机系602教研室11.1基本问题代码生成器的输入代码生成器的输入包括源程序的中间表示,以及符号表中的信息类型检查国防科技大学计算机系602教研室11.1基本问题目标程序绝对机器代码、可再定位机器语言、汇编语言采用汇编代码作为目标语言指令选择a:=a+1INCaLDR0,aADDR0,#1STR0,a国防科技大学计算机系602教研室11.1基本问题寄存器分配在寄存器分配期间,为程序的某一点选择驻留在寄存器中的一组变量。在随后的寄存器指派阶段,挑出变量将要驻留的具体寄存器。计算顺序选择国防科技大学计算机系602教研室11.2目标机器模型考虑一个抽象的计算机模型具有多个通用寄存器,他们既可以作为累加器,也可以作为变址器。运算必须在某个寄存器中进行。含有四种类型的指令形式国防科技大学计算机系602教研室类型指令形式意义(设op是二目运算符)直接地址型opRi,M(Ri)op(M)Ri寄存器型opRi,Rj(Ri)op(Rj)Ri变址型opRi,c(Rj)(Ri)op((Ri)+c)Ri间接型opRi,*MopRi,*RjopRi,*c(Rj)(Ri)op((M))Ri(Ri)op((Rj))Ri(Ri)op(((Rj)+c))Ri如果op是一目运行符,则“opRi,M”的意义为:op(M)Ri,其余类型可类推。国防科技大学计算机系602教研室op包括一般计算机上常见的一些运算符,如ADD加SUB减MUL乘DIV除国防科技大学计算机系602教研室指令意义LDRi,B把B单元的内容取到寄存器R,即(B)RiSTRi,B把寄存器Ri的内容存到B单元,即(Ri)BJX无条件转向X单元CMPA,B把A单元和B单元的值进行比较,并根据比较情况把机...