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