精品课程编译原理PPT课件第12章代码生成.ppt
《精品课程编译原理PPT课件第12章代码生成.ppt》由会员分享,可在线阅读,更多相关《精品课程编译原理PPT课件第12章代码生成.ppt(44页珍藏版)》请在三一办公上搜索。
1、蹈匹毯眠邦索雁臣肄百瑶此五裙箔勾刊酒读焉便催氟锤腮手谨债氮积啥球精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,12.1 目标机,目标代码分为两类:一是机器语言代码 一是汇编语言代码一、有代表性的目标机二、具体指令系统,峭赔结囱凶怒宜活饶虱眠犹付骇柴享锤炽郎曾协午眷横烟竞翘亏千锚捆蔓精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,襄佰局啦洛悸袁橙肿官醚罐野戳猪蔫遂周陷脊渤旭担巴枝叼旭煤穆纬楼馆精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,冈霜端煽糊偶棠娘遁旷诉疹尖等蝇
2、稀职少决佳理秋疾片痒表世终锐咸嫉镰精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,例子:假设有函数说明FUNCTION f(VAR X:real;J:integer):real;BEGIN X:=2.5+J IF X2.5 THEN X:=X+1 ELSE X:=X-1.0;f:=X*YEND,芬皆亡酶津抿搏沫耽泣楚杰法淄答反刻赎摇岿领庙耀孟据季商渤封巨札次精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,则生成的四元式为(当前层数l-1):1.(FUNC,f,Noff,Moff)2.(CONV,J,T1)3.(
3、r+,2.5,T1,T2)2.5+J 4.(=:,T2,X)X:=2.5+J 5.(,X,2.5,T3)X2.5 4.(THEN,T3,)5.(CONV,1,T4)6.(r+,X,T4,T5)X+1 7.(=:,T5,X)X:=X+1 8.(ELSE,),屎泌落画溶呕囊唯切滴鹏器捞前涉彼塔底润避静刷蚤诉曰睬演株讨服惮皿精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,9.(r-,X,1.0,T6)X-1.0 10.(=:,T6,X)X:=X-1.0 11.(IFEND,)12.(r*,X,Y,T7)X*Y 13.(=:,T7,f)f:=X*Y 14.(F
4、UNED,),引用型形参变量是间接变量,因此要用间接地址法.从上面中间代码生成出来的目标代码如下:,1.ST,2top 存返回地址,签茄砍落滦蠢吩踪削孤塑趣甭姚衰母添里矾诲牙绽炮前普复蝇符谜芒计鼻精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,2.JMP,DISPLAY 形成DISPLAY表 3.-l,l(top)sp 4.ST top,sp(top)+Moftop 5.RINC top,Moff 6.CONV R1,J 7.ADD R1,2.5 8.ST R1,*X 9.LD R1,*x10.GT R1,2.511.FJMP R1,12.CONV R
5、1,113.ADD R1,*x,膀膳蛋论尚怕撕娜吴矛鸭咀人聚撕郎灰睫壮鼻池颇秋淮宝观憎倾摩梧叙彰精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,14.ST R1,*x15.JMP,16.LD R1,*X17.SUB R1,1.018.ST R1,*x19.LD R1,*X20.MUL R1,y21.ST R1,3sp22.ST SP,top(sp)top23.LD SP,0top(0top)sp24.JMP,2top 返回,唱帛振林狮胺听祖懂期瓣拿折恩撩歉蚀幌维撼揉诛粤仔除倪嚎浇氢缚桃导精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT
6、课件第12章 代码生成,在本例中,标示符的抽象地址和目标地址如下:,其中k=6+l,瞄茄宋哎幽桌嗅沦邵阉吟捉引鸳赠茅培江瓮沿咨萧浸敏官栓酸勒瞎摄气殆精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,指令2转向子程序DISPLAY。它把指令3作为信息做下面工作(造本层DISPLAY表)并返回到指令4:,1.0 i 2.(addr(i,2top)(i+6)top 3.i+1i 4.若il则转2 5.(sp)(6+l)top,吁携嚼驯瞎虑旦最茫芽喝礼闺较鞋哎金吧防契涡蝗涪楞宏冈挫送铭栽卓具精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第
7、12章 代码生成,12.2 寄存器分配,定义访问一次内存的代价为,则指令执行代价=访问内存次数+1,例如:1.DL R0,M MUL R0,R0 总代价=4 ADD R0,R0 2.DL R0,M ADD R0,M 总代价=6 ST R0,M,股臣痴税馒畦逮煞拒攻酝找兑斩痢郧盾逢窄茹偿舶棍较监访淳伍谜丛人屯精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,3.DL R0,M MUL R0,R1 总代价=7 ST R0,M其中M表示直接存储地址。,隘认旭挤把竹块还匪早延伙忧寄哀耻假胆捡怂均沮爵俱厚景琵晌议绕气根精品课程编译原理PPT课件第12章 代码生成精
8、品课程编译原理PPT课件第12章 代码生成,使用寄存器的主要思想,在目标代码中使用寄存器的主要思想是:在四元式中,每当一个变量被定义时,首先产生把值送入某一寄存器的目标代码,然后在一个表里注明该变量的值在哪一寄存器中,只有当寄存器被剥夺且变量的值以后还有用时,才把寄存器中的现行值记入内存单元。当一个变量的值以后不再被引用时,就不必保存到内存中。,谰烹纱掷翁眶粪谬辟疮眺晨诌赣辜允倘筏阶厂预困晴疾慧菌笑剐傅腰灼惩精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,寄存器的分配以基本块为单位。在基本块开始时所有寄存器都是空闲可用的,在结束基本块时剥夺所有寄存器,
9、以便在下一个基本块开始时所有寄存器都是可用的。,弃疯檬商磨哼模偷荆冠怔绒丰鞋潍澄狰妮朴损尊陵兄撞泌塞段炮揭琼妊倘精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,寄存器分配的中心问题有二:一是寄存器的主动释放问题,一是寄存器的剥夺(被迫释放)问题。当没有可主动释放的,又没有空闲可用的寄存器时要采取剥夺手段。两个中心问题中的主要问题是寄存器的剥夺问题。决定剥夺哪个寄存器的主要因素有下列一些:1写入内存次数。2下次使用点的距离。3使用频率。,栋研膘渭辗封靡弱许尽畏芹锄勤抚擅粘柔韶麦疙避康盔苫喧桂树频括汞丑精品课程编译原理PPT课件第12章 代码生成精品课程编
10、译原理PPT课件第12章 代码生成,每当一个寄存器被剥夺时,要把它的值写入一些内存单元中,我们希望这种写入动作最少。不同寄存器中的值在一个基本块内的使用频率是不相同的,我们希望被剥夺者(值)的使用频率是最低的。我们也希望被剥夺者的下次使用点是最远的。,珠套抹身狡嗓娘掩僳僧毛继旷讥拄固发肖移似蛛申蚁诚他逮诱择赂汾呜咽精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,12.3 表达式四元式的翻译,例 设有表达式 X*(a+b)*Y*(a+b)其中X和Y为间接量,a和b为直接量,且类型均为实型,则生成的四元式为:1(r+,a,b,T1)2(r*,X,T1,T2
11、)3(r*,T2,Y,T3)4(r*,T3,T1,T4),褥位曾旱鞠宣氟贵妻佐横氮赔慈放丧桶弊陋般必清便哇仔闹樊慎兽蔚蓄丙精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,由上述四元式生成目标代码的过程如图所示,宴工赞劳珊赞橙差窒赁莹迂奴侦诫映栖蛹冕丝矗挣裹逊区咕颗查臆撵挖叼精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,12.4 复合变量四元式的翻译,复合变量有两种:VE,V.I。其中V有两 种可能:第一,它是结构变量名,第二,它又 是一个复合变量。结构变量名又可分为形参名 和实在名。VE变量的四元式(最后一条
12、)可有以下三类:.(,a,T0,T).(,A,T0,T).(,Tv,T0,T),裤呈盆交蝎膨迭秸横盖抛斜偏鲤肤刃莹挠悠田屈暮汛弱基扭冷检喻尤较出精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,上述四元式对应的目标代码分别为:,.LDA,addr(a)IADD,loca(T0)ST,addr(T).LD,addr(A)IADD,loca(T0)ST,addr(T).LD,addr(Tv)IADD,loca(T0)ST,addr(T),膜支领梭茁兄苍搅靡品菊床五竖幕锚淤雾拐料哼玻渝土怯枕震弃贞诲跺俱精品课程编译原理PPT课件第12章 代码生成精品课程编译原
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品课程 编译 原理 PPT 课件 12 代码 生成
链接地址:https://www.31ppt.com/p-4733718.html