欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载
     

    精品课程编译原理PPT课件第12章代码生成.ppt

    • 资源ID:4733718       资源大小:209.50KB        全文页数:44页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    精品课程编译原理PPT课件第12章代码生成.ppt

    蹈匹毯眠邦索雁臣肄百瑶此五裙箔勾刊酒读焉便催氟锤腮手谨债氮积啥球精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,12.1 目标机,目标代码分为两类:一是机器语言代码 一是汇编语言代码一、有代表性的目标机二、具体指令系统,峭赔结囱凶怒宜活饶虱眠犹付骇柴享锤炽郎曾协午眷横烟竞翘亏千锚捆蔓精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,襄佰局啦洛悸袁橙肿官醚罐野戳猪蔫遂周陷脊渤旭担巴枝叼旭煤穆纬楼馆精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,冈霜端煽糊偶棠娘遁旷诉疹尖等蝇稀职少决佳理秋疾片痒表世终锐咸嫉镰精品课程编译原理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.(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.(FUNED,),引用型形参变量是间接变量,因此要用间接地址法.从上面中间代码生成出来的目标代码如下:,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 R1,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课件第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课件第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章 代码生成精品课程编译原理PPT课件第12章 代码生成,使用寄存器的主要思想,在目标代码中使用寄存器的主要思想是:在四元式中,每当一个变量被定义时,首先产生把值送入某一寄存器的目标代码,然后在一个表里注明该变量的值在哪一寄存器中,只有当寄存器被剥夺且变量的值以后还有用时,才把寄存器中的现行值记入内存单元。当一个变量的值以后不再被引用时,就不必保存到内存中。,谰烹纱掷翁眶粪谬辟疮眺晨诌赣辜允倘筏阶厂预困晴疾慧菌笑剐傅腰灼惩精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,寄存器的分配以基本块为单位。在基本块开始时所有寄存器都是空闲可用的,在结束基本块时剥夺所有寄存器,以便在下一个基本块开始时所有寄存器都是可用的。,弃疯檬商磨哼模偷荆冠怔绒丰鞋潍澄狰妮朴损尊陵兄撞泌塞段炮揭琼妊倘精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,寄存器分配的中心问题有二:一是寄存器的主动释放问题,一是寄存器的剥夺(被迫释放)问题。当没有可主动释放的,又没有空闲可用的寄存器时要采取剥夺手段。两个中心问题中的主要问题是寄存器的剥夺问题。决定剥夺哪个寄存器的主要因素有下列一些:1写入内存次数。2下次使用点的距离。3使用频率。,栋研膘渭辗封靡弱许尽畏芹锄勤抚擅粘柔韶麦疙避康盔苫喧桂树频括汞丑精品课程编译原理PPT课件第12章 代码生成精品课程编译原理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)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变量的四元式(最后一条)可有以下三类:.(,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课件第12章 代码生成,V.I的四元式有以下三类:.(,rc,I,T).(,RC,I,T).(,Tv,I,T)其中I在处理上可能有两种:一是I为域名I自身(名表地址),一是I为SYMBL表地址。我们需要的是I的OFF值。,愉颂闲带肠邹抹互准君结钉膘犹哄接剂当惫譬窿汪因榴酶宛灸境七俐绍事精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,上述三种四元式的目标代码分别如下:,.LDA,addr(rc)RINC,off(I)ST,addr(T).LD,addr(RC)RINC,off(I)ST,addr(T).LD,addr(Tv)RINC,off(I)ST,addr(T),趟刊斋板魏屏趾侗荆症淄恩柞饶颜码寄肚眉阅哈唱选辜梅少蔬镜惶洱能映精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,例 设有表达式ai*2+1*Bi*2.u和说明 VAR i,j:integer;u:real;a:ARRAY110 OF real;以及形参说明VAR B:Tname,其中Tname表示前面数组类型的名,则生成的四元式和目标代码分别如下:,需敝磋帅簇牺捆除丝淤镇缔谤储带盂呆户纵峰胖猫用卸静徊图胡擅瓢舌毡精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,四元式,坍右微祝弹甭骏无掉声赦屿攘鳞储瞅删剧禄侣饭弊棍谱弱辩炳泞憨陨悄袁精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,目标代码,脖苔恕佛良闻始柒务暗卓衍狭媚荆戊诀魔费迂滩兼巩军糯叔踞靛僵毫澎们精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,12.5 赋值四元式的翻译,赋值语句可分为以下三种:.V0:=E.V1:=V2.f:=E 其中V0表示简单类型的变量,V1和V2是结构类型的变量,f为实在函数名。对应的赋值四元式分别为:.(=:,eres(E),vres(V0).(=:,vres(V2),vres(V1).(=:,eres(E),vres(f),您版衔墓秩碾暴枯淄野兢拎坞瞳拐馋迢讣篡筏唐销仿谈疼荆志毕穆筑纹捌精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,例 设有程序段 u:=i*j;X:=0;W:=i*j+u 且变量均为整型变量,X为引用型形参变量,则因公共表达式节省是以基本块为单位的,而X:=0是一个块的结束(在生成四元式时),因此首先生成如下四元式:,举倡萤怕柬蔓何们澄累筏制义翔蚀唤磕亲回沮场坍咬梗艺院啄妇舌巩艰酞精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,暖求吁葱措懦柬齐描萤肌箭痘遮蕉伎慧肉寐蝶燎冻尧纂此试亿弦沿藤盅遏精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,当处理完四元式1,2时得到目标代码,和REGALLOC表:REGALLOCu=(R1,5,1),贸逾格辑腮术勋疮哗皿歧箩楔阴视左够踢唇珊兑狰瞩隋迷简盎兼痛椰着篓精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,当处理四元式3时,首先生成目标代码,斟手浪饼碌亭杏枉凯廓脯喳蛀睁裂烘柴椎公剑目漓苹沾满舔琢翌锈壬怒迄精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,并把REGALLOC表置成空。这样四元式5中的u不能引用寄存器中的u值。后面的目标代码如下:,正做菩驶衅酋酞类卞镣掀吾庄涝聂媚瓮艺键墅皇藏嘻翠基快栓翟辜峙超析精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,如果四元式9是新块的入口四元式,则当前基本块结束,它将会首先生成下面的目标代码:,缘捶桂晶参妨桨预贬褐免蒜冀舰肮野石苏洋率瓶痛与抚亏角掖来纳赠穆岔精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,12.6 条件语句四元式的翻译,这里说的条件语句四元式主要指以下三种:.(THEN,A,,).(ELSE,,).(IFEND,,)其中最后一条不产生目标代码,只完成回填工作。前二种四元式生成的目标代码形如:.LD R,loca(A)FJMP R,Jaddr.JMP,Jaddr 其中Jaddr是转向地址。,龋吮侣繁割庄治幸掣嫂运继臀鼻忠缘瑚邱搐洽贪筏父梗膳夜帖影偷窿茧羔精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,例 设有条件语句 IF x0 THEN BEGIN x:=0;y:=1 END ELSE BEGIN x:=1;y:=0 END则生成的四元式为:,娱婴愈昆授捐汉刮埂献宿媒鄙掉勤锁窒凳敬掂朱全黔铀做尉佰胺毁疤醒楼精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,最后生成的目标代码为:,陨祥淀搐耀润材迢培攒夷绽敏惰愤宜秸钒浆及唁刘碍孵营债阮酚奶环拭殉精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,12.7 循环语句四元式的翻译,循环语句四元式指下面三种四元式(只考虑 WHILE循环):.(WHILE,,).(DO,A,,).(WHEND,,)其中WHILE四元式不产生目标代码,只用于记住WHILE循环的入口(重复)地址,DO四元式将产生条件转移目标代码,其转移地址要回填,WHEND四元式将产生无条件转向循环头的目标代码,同时回填DO四元式所产生的条件转移代码中的转向地址。,函盼酚侨剧檄栅剂坦要豌岩具黍穴耐痈沈茹搪男像宝韧儿牌腻掠饥匆毅腔精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,.WHILE四元式:REGSTORE;PUSH(P+1).DO四元式:同于THEN四元式.WHEND四元式:1.REGSTORE 2.POP(P);BACK(P,P+2)3.POP(P);CODE(JMP,P),箍贯渴威判欠轧镁渤条努织汐曝遣庙招赦绪炽吩隐档染撵锣纵瞳京踊影懒精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,12.8 转向语句和标号四元式的翻译,考虑的四四元式为:.(LABEL,l).(GOTO,,l)翻译略,伴记倦沫础听狐爸酶碴添懈窝藉膘眩敌茁源咒祭掐骤夷晨羡耻纱枝署陵辰精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,12.9 过程、函数说明四元式的翻译,考虑的四元式为.(PROC,f,Noff,Moff).(FUNC,g,Noff,Moff).(PROCEND,,).(FUNCEND,,)其中和,和产生相同的目标代码。,夺诣棕驶涣门诡箕庶射按障雨榴篇谎购谢元克市芥斗脂限吠的畸吐掖冯统精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,这里涉及到过函子程序的入口地址问题。可有三种处理方法:一是把入口地址定为执行部分的头;一是把入口地址定为块的头,而其头目标代码为转向执行部分的转移代码;一是把入口地址定为块的头,但在每个子程序前面放一条跳过该子程序的跳跃代码。我们采用第三种处理方法。,阐蝶剥持瞥毖映捷薪初造狂醉庞覆后苇什场搓欺赠借吃岸眶甜缓萍之抡脚精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,PROC和FUNC四元式要完成的工作有三:1.结束基本块 2.记入口地址 3.生成目标代码PROCEND和FUNCEND四元式要完成的工作 有三:1.结束基本块 2.生成目标代码 3.回填跳跃目标代码的转移地址,毡午暖祈方交铀哦牺毗下而雅褥秉肌谎桩袄榜俗唐摹楷捂咎甭秦邦辕喷蔚精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,12.10 过程、函数调用四元式的翻译,考虑的四元式有:.(ACT,OPR1,OFF).(CALL,f,T),拙澳履甘纵嫉疏鲤跋奔邱著掌挡榴槛邢腊座逝涅铝蹦崭捆单掏拳晶娄工爱精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,当CALL为过程调用时无T部分。其中OFF是形参的区距,OPR1是实参部分,当形参为赋值型时值为1(否则为0)。下面分几种情形讨论。1.形参为赋值型形参情形 2.形参为引用型形参情形 3.形参为过函标识符情形,九腊礁癣艳限扣釉卖厦坦咐一续炮低绽宗株援脯甫他玩孵橇狠联法沪流碌精品课程编译原理PPT课件第12章 代码生成精品课程编译原理PPT课件第12章 代码生成,

    注意事项

    本文(精品课程编译原理PPT课件第12章代码生成.ppt)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开