第十二章代码生成_精品文档PPT格式课件下载.ppt
- 文档编号:15497707
- 上传时间:2022-11-02
- 格式:PPT
- 页数:28
- 大小:139.50KB
第十二章代码生成_精品文档PPT格式课件下载.ppt
《第十二章代码生成_精品文档PPT格式课件下载.ppt》由会员分享,可在线阅读,更多相关《第十二章代码生成_精品文档PPT格式课件下载.ppt(28页珍藏版)》请在冰豆网上搜索。
模型机的汇编语言作为输出。
12.2一个计算机模型一个计算机模型M模模型型机机具具有有n个个通通用用寄寄存存器器R1,R2,R3,Rn,它它们们既可以作为累加器,又可以作为变址器。
既可以作为累加器,又可以作为变址器。
约约定定:
op表表示示运运算算,C表表示示常常量量;
M表表示示内内存存单单元元(用用变变量量名名表表示示该该变变量量所所在在的的单单元元),Ri表表示示寄寄存器;
存器;
*表示间接寻址表示间接寻址寻址类寻址类型型指令格式指令格式意义(设意义(设op是二目算符)是二目算符)直接型直接型opRi,M(Ri)op(M)=Ri寄存器型寄存器型opRi,Rj(Ri)op(Rj)=Ri变址型变址型opRi,c(Rj)(Ri)op(Rj)+c)=Ri间接型间接型opRi,*M(Ri)op(M)=RiopRi,*Rj(Ri)op(Rj)=RiopRi,*c(Rj)(Ri)op(Rj)+c)=Ri1.指令系统与寻址方式指令系统与寻址方式2.令令X代表代表Ri或者或者M,则则(X)表示直接取表示直接取X的内容的内容作为操作对象,作为操作对象,(X)表示一层间接,即取表示一层间接,即取X的的内容作为地址内容作为地址2.特殊指令特殊指令除了上述的寻址方式和一般的运算指令之外,除了上述的寻址方式和一般的运算指令之外,计算机模型的指令系统中还包括如下特殊指令计算机模型的指令系统中还包括如下特殊指令主要有两大类:
主要有两大类:
内存与寄存器交换类:
包括内存与寄存器交换类:
包括LD与与ST;
比较与转移类:
如比较与转移类:
如CMP与与JX等等于于零零转转X单单元元JzX将将A单单元元与与B单单元元的的值值进进行行比比较较,把把结结果置入状态字果置入状态字CMPA,B不不为为零零转转X单单元元JnzX无条件转向无条件转向X单元单元JX等于转等于转X单元单元J=X把把寄寄存存器器Ri的的内内容容存存回回存存储储单单元元B,即即(Ri)=BSTRi,B小于转小于转X单元单元JRiLDRi,B意义意义指令指令意义意义指令指令例:
条件语句例:
条件语句ifABgotoX中间代码:
中间代码:
(J,A,B,X)目标代码目标代码:
CMPA,BJX12.3一个简单的代码生成器一个简单的代码生成器一个基于基本块的代码生成器一个基于基本块的代码生成器它的输入是四元式中间代码,输出是它的输入是四元式中间代码,输出是M机器的机器的汇编代码汇编代码着重讨论在基本块内如何充分利用寄存器着重讨论在基本块内如何充分利用寄存器12.3.1寄存器分配原则寄存器分配原则v在指令的执行代价中,寄存器的代价是最小在指令的执行代价中,寄存器的代价是最小的,因此总是希望将尽可能多的运算对象放的,因此总是希望将尽可能多的运算对象放在寄存器中;
在寄存器中;
v由于任何一个计算机模型中的寄存器个数都由于任何一个计算机模型中的寄存器个数都是有限的,因而需要根据一些原则,对寄存是有限的,因而需要根据一些原则,对寄存器进行分配器进行分配基于基本块的寄存器分配的一般原则:
基于基本块的寄存器分配的一般原则:
当生成某变量的目标代码时,尽量让变量的当生成某变量的目标代码时,尽量让变量的值或中间结果保留在寄存器中,直到寄存器值或中间结果保留在寄存器中,直到寄存器不够分配为止,这样引用变量值时可减少对不够分配为止,这样引用变量值时可减少对内存的存取次数,提高运行速度内存的存取次数,提高运行速度进入基本块时所有寄存器是空闲的,当到基进入基本块时所有寄存器是空闲的,当到基本块出口时,将变量的有用值存回内存,释本块出口时,将变量的有用值存回内存,释放所有寄存器放所有寄存器在基本块内,后边不再被引用的变量占用的在基本块内,后边不再被引用的变量占用的寄存器应尽早释放,以提高寄存器的利用效寄存器应尽早释放,以提高寄存器的利用效率率12.3.2待用信息链表法待用信息链表法1.引入原因:
引入原因:
为为了了把把在在基基本本块块内内还还要要被被引引用用的的变变量量值值尽尽可可能能保保存存在在寄寄存存器器中中,不不再再被被引引用用的的变变量量所所占占的的寄寄存存器器尽尽早早释释放放,在在翻翻译译四四元元式式i:
A:
=BopC时时,必必须须知知道道变变量量A,B,C在在基基本本块块内内其其后后的的引引用用情情况况,即即所谓所谓变量的待用信息变量的待用信息。
2.基本定义:
基本定义:
定值、引用、活跃定值、引用、活跃在在形形如如i:
=B+C的的代代码码中中,出出现现在在“:
=”左左边边和和右右边边的的变变量量,分分别别被被称称为为对对变变量量的的定定值值和和引引用用,i被被称称为为变变量量的的定定值值点点或或引引用用点点。
若若变变量量的的值值在在i之之后后的的代代码码序序列列中中被被引引用用,则则称称变变量量在在i点点是是活活跃跃的。
的。
待用信息待用信息在在基基本本块块中中,变变量量A在在四四元元式式i中中被被定定值值,在在i后后面面的的四四元元式式j中中引引用用A值值,且且从从i到到j之之间间没没有有其其他他对对A的的定定值值点点,称称j是是i中中对对变变量量A的的待待用用信信息息(下下次次引引用用信信息息)。
所所有有这这样样的的待待用用信信息息jk(k=1,2,)构成构成待用信息链待用信息链。
只在基本块内考虑待用信息,一个变量在基本只在基本块内考虑待用信息,一个变量在基本块的后继中是否被引用,可从活跃变量信息得块的后继中是否被引用,可从活跃变量信息得知(出基本块后,变量是否活跃需要进行全局知(出基本块后,变量是否活跃需要进行全局的数据流分析才能确定)的数据流分析才能确定)在基本块在基本块B2内:
内:
R在在(3)处定值,在处定值,在(4)处被引用,所以处被引用,所以(4)是是(3)中中R的待用信息的待用信息流程流程B3-B2:
X在在(5)处被定值,在处被定值,在(3)处被引用,所以处被引用,所以X在在(5)处是活跃的处是活跃的
(1)readX
(2)readY(3)R:
=XmodY(4)ifR=0goto(8)(5)X:
=Y(6)Y:
=R(7)goto(3)(8)writeY(9)haltB1B2B3B43.基本块内求待用信息的算法基本块内求待用信息的算法假假设设符符号号表表中中含含有有变变量量的的待待用用信信息息和和活活跃跃信信息息栏栏;
四四元元式式表表上上也也有有关关于于结结果果变变量量、左左右右操操作作数变量的待用和活跃信息栏。
数变量的待用和活跃信息栏。
1)把把基基本本块块中中各各变变量量在在符符号号表表的的登登记记项项中中的的待待用用信信息息栏栏置置为为“非非待待用用”,活活跃跃信信息息栏栏按按变变量量在在基基本本块块出出口口是是否否活活跃跃而而置置为为“活活跃跃”或或“非非活活跃跃”(假假定定用用户户变变量量都都是是活活跃跃的的,临临时时变变量量都都是非活跃的)是非活跃的)。
2)从从基基本本块块出出口口的的四四元元式式开开始始由由后后向向前前依依次次处处理理各个四元式各个四元式i:
=BopC,直到处理完为止:
直到处理完为止:
i.把把符符号号表表中中变变量量A的的待待用用信信息息和和活活跃跃信信息息附附加到四元式加到四元式i上。
上。
ii.把把符符号号表表中中变变量量A的的待待用用信信息息栏栏和和活活跃跃信信息息栏栏分分别别置置为为“非非待待用用”和和“非非活活跃跃”。
(由由于于在在i中中对对A的的定定值值只只能能在在i以以后后引引用用,而而对对i以前的四元式来说以前的四元式来说A是非活跃和非待用的。
)是非活跃和非待用的。
)iii.把把符符号号表表中中变变量量B和和C的的待待用用信信息息和和活活跃跃信信息附加到四元式息附加到四元式i上。
iv.把把符符号号表表中中变变量量B和和C的的待待用用信信息息栏栏置置为为“i”,活跃信息栏置为活跃信息栏置为“活跃活跃”。
注注意意:
i,ii,iii,iv的的次次序序不不能能颠颠倒倒,因因为为B和和C也可能是也可能是A求待用信息的实例求待用信息的实例有如下基本块有如下基本块
(1)T:
=A-B
(2)U:
=A-C(3)V:
=T+U(4)D:
=V+UA,B,C,D是用户变量(在基本块出口活跃)是用户变量(在基本块出口活跃)T,U,V是临时变量(在基本块出口不活跃)是临时变量(在基本块出口不活跃)用用“F”表示表示“非待用非待用”“非活跃非活跃”,“L”表示表示“活跃活跃”则该基本块的待用信息及活跃信息的计算结果如下:
则该基本块的待用信息及活跃信息的计算结果如下:
(F,F)(F,F)(F,L)D:
=V+U4(4,L)(F,F)(4,L)V:
=T+U3(F,L)(F,L)(3,L)U:
=A-C2(F,L)(2,L)(3,L)T:
=A-B1右操作数右操作数左操作数左操作数结结果果四元式四元式序号序号附附加加在在四四元元式式上上的的待待用用及及活活跃跃信信息息符符号号表表中中的的待待用用及及活活跃跃信信息息(F,F)(1,L)(1,L)
(1)(F,F)(4,L)V(F,F)(3,L)(4,L)U(3,L)T(F,F)D(2,L)CB(2,L)(F,F)(F,F)(F,F)(F,L)(F,L)(F,L)(F,L)A
(2)(3)(4)初值初值变量名变量名12.3.3代码生成算法代码生成算法1.寄存器描述数组寄存器描述数组RVALUE为为了了掌掌握握各各寄寄存存器器的的使使用用情情况况,用用数数组组RVALUE记录每个寄存器的当前情况:
记录每个寄存器的当前情况:
RVALUERi=A表表示示Ri的的现现行行值值是是变变量量A的值,或说的值,或说A独占独占Ri。
RVALUERj=表示表示Rj是空闲的。
是空闲的。
RVALUERi=B,C表表示示Ri的的现现行行值值是是变变量量B和和C的的值值,或或说说B,C共共占占Ri。
在在复复写写(B:
C)时存在多个变量共占一个寄存器。
时存在多个变量共占一个寄存器。
2.变量地址描述数组变量地址描述数组AVALUE生生成成目目标标代代码码要要用用到到变变量量的的地地址址,它它可可能能是是某某寄寄存存器器Ri,也也可可能能是是内内存存单单元元(仍仍用用变变量量名名表表示示)。
若若变变量量值值同同时时在在寄寄存存器器Ri和和内内存存,则取则取Ri为其地址。
为其地址。
AVALUEA=Ri表表示示变变量量A的的值值在在Ri中中,不在内存。
不在内存。
AVALUEB=Rj,B表表示示变变量量B的的值值在在Rj中中,又在内存。
又在内存。
AV
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第十二 代码 生成 精品 文档