【教学课件】第十一章代码生成.ppt
《【教学课件】第十一章代码生成.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第十一章代码生成.ppt(30页珍藏版)》请在三一办公上搜索。
1、第十一章 代码生成,词法分析器,语法分析器,中间代码生成器,优化段,表格管理,出错处理,目标代码生成器,代码生成是把语法分析后或优化后的中间代码变换成目标代码。目标代码一般有以下三种形式:能够立即执行的机器语言代码,所有地址已经定位;待装配的机器语言模块。执行时,由连接装配程序把它们和某些运行程序连接起来,转换成能执行的机器语言代码;汇编语言代码。尚须经过汇编程序汇编,转换成可执行的机器语言代码。,代码生成着重考虑的问题:如何使生成的目标代码较短;如何充分利用计算机的寄存器,减少目标代码中访问存贮单元的次数。如何充分利用计算机的指令系统的特点。,11.1 基本问题,代码生成器的输入 代码生成器
2、的输入包括源程序的中间表示,以及符号表中的信息类型检查,11.1 基本问题,目标程序 绝对机器代码、可再定位机器语言、汇编语言采用汇编代码作为目标语言 指令选择 寄存器分配 计算顺序选择,11.2 目标机器模型,考虑一个抽象的计算机模型具有多个通用寄存器,他们既可以作为累加器,也可以作为变址器。运算必须在某个寄存器中进行。含有四种类型的指令形式,如果op是一目运行符,则“op Ri,M”的意义为:op(M)Ri,其余类型可类推。,op 包括一般计算机上常见的一些运算符,如ADD加SUB减MUL乘DIV除,不考虑代码的执行效率,目标代码生成是不难的,例如:A:=(B+C)*D+E翻译为四元式:T
3、1:=B+CT2:=T1*DT3:=T2+EA:=T3,11.3 一个简单代码生成器,假设只有一个寄存器可供使用,目标代码:LD R0,BADD R0,CST R0,T1,假设T1,T2,T3在基本块之后不再引用:LD R0,BADD R0,CMUL R0,DADD R0,EST R0,A,四元式T1:=B+C,T3:=T2+E,T2:=T1*D,A:=T3,LD R0,T1MUL R0,DST R0,T2,LD R0,T2ADD R0,EST R0,T3,LD R0,T3 ST R0,A,11.3 一个简单代码生成器,四元式的中间代码变换成目标代码,并在一个基本块的范围内考虑如何充分利用寄存
4、器:在生成计算某变量值的目标代码时,尽可能让该变量保留在寄存器中。后续的目标代码尽可能引用变量在寄存器中的值,而不访问内存。在离开基本块时,把存在寄存器中的现行的值放到主存中。,11.3.1 待用信息,如果在一个基本块内,四元式i对A定值,四元式j要引用A值,而从i到j之间没有A的其他定值,那么,我们称j是四元式i的变量A的待用信息。(即下一个引用点)i:A:=B op Cj:D:=A op E假设在变量的符号表登记项中含有记录待用信息和活跃信息的栏。,待用信息和活跃信息的表示:1(x,x)表示变量的待用信息和活跃信息。其中i表示待用信息,y表示活跃,表示非待用和非活跃;2 在符号表中,(x,
5、x)(x,x)表示后面的符号对代替前面的符号对;3 不特别说明,所有说明变量在基本块出口之后均为非活跃变量。,计算待用信息和活跃信息的算法步骤:1.开始时,把基本块中各变量的符号表登记项中的待用信息栏填为“非待用”,并根据该变量在基本块出口之后是不是活跃的,把其中的活跃信息栏填为“活跃”或“非活跃”;,2.从基本块出口到基本块入口由后向前依次处理各个四元式。对每一个四元式i:A:=B op C,依次执行下面的步骤:1)把符号表中变量A的待用信息和活跃信息附加到四元式i上;2)把符号表中A的待用信息和活跃信息分别置为“非待用”和“非活跃”;3)把符号表中变量B和C的待用信息和活跃信息附加到四元式
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 第十一 代码 生成
链接地址:https://www.31ppt.com/p-4879644.html