编译原理王晓斌第十二章.ppt

上传人:sccc 文档编号:4740381 上传时间:2023-05-12 格式:PPT 页数:52 大小:416KB
返回 下载 相关 举报
编译原理王晓斌第十二章.ppt_第1页
第1页 / 共52页
编译原理王晓斌第十二章.ppt_第2页
第2页 / 共52页
编译原理王晓斌第十二章.ppt_第3页
第3页 / 共52页
编译原理王晓斌第十二章.ppt_第4页
第4页 / 共52页
编译原理王晓斌第十二章.ppt_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《编译原理王晓斌第十二章.ppt》由会员分享,可在线阅读,更多相关《编译原理王晓斌第十二章.ppt(52页珍藏版)》请在三一办公上搜索。

1、第十二章代码优化和目标代码生成,本章主要讨论以下两个问题:1.如何对中间代码进行优化;2.如何由优化后的中间代码生成有效和目标代码;,电子科技大学计算机科学与工程学院,邹刽声敬鉴徘倪惨曰月东设吾体颇瓷茎窜缨悲花镊雕辫巧财除闰餐碟观渗编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,一、优化的定义,第一节 局部优化,优化是一种等价的,有效的程序变换,等价不改变程序运行结果,有效时空效率要高,电子科技大学计算机科学与工程学院,蝎餐派娠硅博蠕甚竖诞间矫粮乔诈脏磷储现赴戏独匝豪逊蓟梦嫂吾苯讯辕编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,二、不同阶段的优化,局部优化:在基本块内的优化全局优

2、化:超越基本块,在基本块之间的优化,1.源程序阶段的优化:考虑DS和算法2.编译优化中间代码优化和目标代码优化,电子科技大学计算机科学与工程学院,中间代码优化局部优化和全局优化,雅桑融敞忘晶掐瞒追柒宪符郑公碰颊健囊叶投档叛嫡抨公钾蚀敬羔匙君骑编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,三、划分基本块和构造程序流图,1.划分基本块,基本块是指程序中的一段语句(四元式)序列。一个入口语句,即程序中该语句序列的第一个语句;一个出口语句,即该语句序列的最后一个语句;,(1)入口语句,紧跟在条件转向语句后的那个语句,程序的第一条语句,能由条件或无条件转向语句转移到的语句,(2)出口语句,转向语

3、句,停止语句,电子科技大学计算机科学与工程学院,孰驮明茬睦普尺雅猛尤卿蝇山疾动爷抒依悬痪舱怖熟丛厌初船郭在猿闰敲编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,入口语句 入口语句 入口语句 入口语句 转向语句 停语句,(3)确定基本块,删除未被划入基本块的语句,电子科技大学计算机科学与工程学院,缕优邢埔纷兢收骂烽酵滁灿瞒链博坛帚夜凿吐凑桃纬涣旦邦默幌铰贼猜漏编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,电子科技大学计算机科学与工程学院,(1)i:=m-1(2)j:=n(3)t1:=4*n(4)v:=at1(5)i:=i+1(6)t2:=4*i(7)t3:=at2(8)if t3v

4、 goto(9)(13)if i=j goto(23)(14)t6:=4*i(15)x:=at6,(16)t7:=4*i(17)t8:=4*j(18)t9:=at8(19)at7:=t9(20)t10:=4*j(21)at10:=x(22)goto(5)(23)t11:=4*i(24)x:=at11(25)t12:=4*i(26)t13:=4*n(27)t14:=at13(28)at12:=t14(29)t15:=4*n(30)at15:=x,B1,B2,B3,B4,B5,B6,例,冶躇舜酝饼狙阂虾嫂颤丑曙滥哉橡昏驰首戳束兑嫌伍鬼妻狐幌剥母沤宦什编译原理(王晓斌)第十二章编译原理(王晓斌)第十

5、二章,2.构造流图,G=(N,E,n0),(1)基本块集即为结点集N;(2)含程序第一个语句的基本块为首结点n0;(3)设Bi,Bj N,若满足下列条件之一,则Bi Bj,Bj 紧跟在Bi 之后,且Bi 的出口语句不是无条件转向或停止语句,Bi 的出口语句为转向语句,其转向点恰为Bj 的入口语,电子科技大学计算机科学与工程学院,特垒映都镰险钞厕东桩蔷沦冗瞅辛身亿巡阶彰命暖耸悦敷恫疽桥错贝椿陋编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,电子科技大学计算机科学与工程学院,(1)i:=m-1(2)j:=n(3)t1:=4*n(4)v:=at1,(5)i:=i+1(6)t2:=4*i(7)t

6、3:=at2(8)if t3v goto(5),(9)j:=j-1(10)t4:=4*j(11)t5:=at4(12)if t5v goto(9),(13)if i=j goto(23),(14)t6:=4*i(15)x:=at6(16)t7:=4*i(17)t8:=4*j(18)t9:=at8(19)at7:=t9(20)t10:=4*j(21)at10:=x(22)goto(5),(23)t11:=4*i(24)x:=at11(25)t12:=4*i(26)t13:=4*n(27)t14:=at13(28)at12:=t14(29)t15:=4*n(30)at15:=x,B1,B2,B3,

7、B4,B5,B6,谬掏俭贾钝售暇员武所匪吕八惨棋捍蒙抒蜕簿谱扮尹庆择缕纫豫拍埋须八编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,四、基本块内的优化,对于A:=OP B 或 A:=B OP C这样的语句,若B及C为常数,则编译时可以把它们计算出来,把值存放在临时单元中,相应的语句变成A:=T;,1.合并已知量,2.删除公共子表达式,也叫删除多余运算;例如两条赋值语句A:=B+C*DU:=V-C*D中有两次C*D运算。只计算一次,将值存在临时单元中T第二个语句改为:U:=V-T,电子科技大学计算机科学与工程学院,臼戳蚀量拭口零楼液肉厚赛炮仿殖拈浦可迅碘垃头导软匀坝犊沸询啸蔼就编译原理(王晓

8、斌)第十二章编译原理(王晓斌)第十二章,4.删除死代码,例如四元式序列(p)A:=B+D(q)A:=M+N中没有对A的引用,则第一个赋值无用,可删除。,3.删除无用赋值,iF语句条件为定值,电子科技大学计算机科学与工程学院,屹豺剑焚戴化得蟹琢猎伏榷矿氢联私胃吭圭敏盖栏埃就截鞭薯惑钻滤列罚编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,F:=1I:=H*GC:=F+EJ:=D/4D:=F+3 K:=J+CB:=A*AL:=HG:=B-DL:=I-JH:=E,合并已知量,F:=1I:=H*GC:=1+EJ:=1D:=4K:=2+EB:=A*AL:=HG:=B-4L:=I-1H:=E,删除公共

9、子表达式;I:=E*G,删除无用赋值;,假定F,C,D和J在基本块外不再引用,可得结果:,B:=A*A G:=B-4 K:=2+EI:=E*G L:=I-1,电子科技大学计算机科学与工程学院,例1,哈矿只锥釉疥坡该默撅玻生盅湃护龄古埃上氓庆潍醚架全站道值臼蕴妥诛编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,(14)t6:=4*i(15)x:=at6(16)t7:=4*i(17)t8:=4*j(18)t9:=at8(19)at7:=t9(20)t10:=4*j(21)at10:=x(22)goto(5),(14)t6:=4*i(15)x:=at6(17)t8:=4*j(18)t9:=at

10、8(19)at6:=t9(21)at8:=x(22)goto(5),优化后,例2,电子科技大学计算机科学与工程学院,删除公共子表达式,蹿票静廷染焊阂滤扶斜喘囚离食扦肌养绑之簧亏祟充诸痔侯详望边沃囊霖编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,第二节 全局优化,一、循环的定义,全局优化有很多种,本节只讨论循环优化;,如何找出程序中的所有循环?循环优化有哪些?,循环是程序流图中有唯一入口结点的强连通子图,入口结点:子图中满足下列条件的结点n:或者n是流图的首结点,或者在子图外有一结点m,它有一有向边mn引向结点n;,强连通子图:任意两个结点可互相连联通,电子科技大学计算机科学与工程学院,

11、锥览呢忙赡媳凌镶佯宫挝功伐壹裤责锚佯价寄执菲滓藕谣瓦季行傲堤统树编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,1,2,3,4,5,6,7,8,9,10,5,6,7,8,9,例:,电子科技大学计算机科学与工程学院,是循环,4,,不是循环,不是循环,满肆怔看硼抵活曹淖晾止疟痪腰民申藕证硬仅室堤陡覆恍寨卫殖佬糙辞袜编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,二、循环的的查找,1.必经节点,从流图的首结点出发到达结点n的任一通路都必须经过的结点d,称d为n的必经结点,记为d DOM n,流图的首结点是流图中任一结点的必经结点 即n0 DOM n,每个结点是它本身的必经结点,即n DO

12、M n,必经结点集:流图中结点n的所有必经结点的集合,称为n的必经结点集,记为D(n),电子科技大学计算机科学与工程学院,该雹遥卫貉仕川挨摧它晕按艰擅典瞎咸红钩几乌苑市忱茫耐惕武筋双琅赣编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,1,2,3,4,5,6,7,8,9,10,D(1)=1D(2)=1,2D(3)=1,2,3D(4)=1,2,4D(5)=1,2,4,5D(6)=1,2,4,5,6D(7)=1,2,4,5,6,7D(8)=1,2,4,5,6,8D(9)=1,2,4,5,6,9D(10)=1,2,4,10,电子科技大学计算机科学与工程学院,糖兽写婿剿讣顷彭思要缚扭擞虑贸衙烂母讶

13、募岗岛磐抵惑莲莫狡亿只推拉编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,必经结点具有如下性质:自反性:即对任意结点n,有n DOM n传递性:若n1 DOM n2,n2 DOM n3,则n1 DOM n3反对称性:若n1 DOM n2,n2 DOM n1,则n1=n2,电子科技大学计算机科学与工程学院,锐哟杭止献迂泛牡栗篡捂医鲍径露彭浮枢区箭园进告纲存玉浑框百懂枣性编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,2.回边,流图G=(N,E,n0)中的有向边nd,如果d是n的必经结点,即dD(n),则称nd为流图的一条回边。,54,95,102,电子科技大学计算机科学与工程学院,抱

14、勘阮晌黔特励辰娱翠踞徘伸她委脖鹃赢渐缀称寒酬搂鸟寒醛仿琵澎哆淌编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,电子科技大学计算机科学与工程学院,若nd是流图G=(N,E,0)的一条回边,M是流图中有通路到达n而该通路不经过d的结点集,则集合 LOOP=n,dM组成了G的一个子图,称为由回边nd组成的循环。,该流图有三条回边:1.回边54构成循环 5,4,6,7,8,92.回边95构成循环 9,5,6,7,83.回边102构成循环 10,2,3,4,5,6,7,8,9,3.由回边构成的循环,惨管冰逐物塞疗金劫迈喻坪且让贸瞪薯舱祈敝忧筷露原抒略奉女蛀惭劫阶编译原理(王晓斌)第十二章编译原理(

15、王晓斌)第十二章,二、循环优化,1.代码外提,2.强度削弱,基本归纳变量,i有唯一定值,i:=i c同族归纳变量,j:=c1 i c2,变成j:=j c1 c,但j必须在循环外赋初值 j:c1*i c2,电子科技大学计算机科学与工程学院,滩悔介挥酋滋抨狭任屉妥桂圾秦涡辜搽布站萧厉纸薛潜躲责诱熏质狡垛惜编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,3.删除归纳变量,即改用同族归纳变量作为判断条件例如将 i 10 改为 t3 100+t1因原来t3:=10*i+t1,而100 t1 即 10*10+t1,电子科技大学计算机科学与工程学院,赦犁绦兰祟宽萨暗饺力乔佬助叫制啼吊尸绅罗悔鼎叮模垃茶

16、轰路祸翔鄂郊编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,电子科技大学计算机科学与工程学院,例,催抒货窍臻锡毫靳戮绸晋寥燎唁层闷或招诫脱抛邢治柞邱捡贤职父或豺练编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,电子科技大学计算机科学与工程学院,涣伺匡寝谱艰碟满吏党累软躁哗捏吝抵港馅沛狠坏冻昂欣卤头堰汪论葡滇编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,另例:(1)PROD:=0(2)I:=1(3)T1:=4*I(4)T2:=a0 4(5)T3:=T2T1(6)T4:=4*I(7)T5:=b0 4(8)T6:=T5T4(9)T7:=T3*T6(10)PROD:=PROD+T7

17、(11)I:=I+1(12)if I 20 goto(3),电子科技大学计算机科学与工程学院,删除多余运算,代码外提,颠戎惋鹅狡砧脚输巍徊梁挣陀阴跌烽内诚撬劈遁芽绩矫圭以耕候湾汛止势编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,删除多余运算,代码外提(1)PROD:=0(2)I:=1(4)T2:=a0 4(7)T5:=b0 4(3)T1:=4*I(5)T3:=T2T1(6)T4:=T1(8)T6:=T5T4(9)T7:=T3*T6(10)PROD:=PROD+T7(11)I:=I+1(12)if I20 goto(3),电子科技大学计算机科学与工程学院,强度削弱,腐轰话稻镁瓣蕾沁沸逝草

18、朴径勿瓤磅兹疮雄拨仍掺胀连当八腔街卿晶兰睡编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,强度削弱(1)PROD:=0(2)I:=1(4)T2:=a0 4(7)T5:=b0 4(3)T1:=4*I(5)T3:=T2T1(6)T4:=T1(8)T6:=T5T4(9)T7:=T3*T6(10)PROD:=PROD+T7(11)I:=I+1(3)T1:=T1+4(12)if I 20 goto(5),电子科技大学计算机科学与工程学院,极旋萌炎邻我凄求宪淌颊尖从篇湖士吟秋侍慑缴褒撵左迪婚歉宴蝎寅益妓编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,强度削弱(1)PROD:=0(2)I:=1(

19、4)T2:=a0 4(7)T5:=b0 4(3)T1:=4*I(5)T3:=T2T1(8)T6:=T5T1(9)T7:=T3*T6(10)PROD:=PROD+T7(11)I:=I+1(3)T1:=T1+4(12)if I 20 goto(5),电子科技大学计算机科学与工程学院,变换循环控制条件,炙宿宠缚包歹爬肪跑族挑唾愁闭轻邑凑唉戳衙机乌跌竿赵蓝握艇台坪剔途编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,变换循环控制条件(1)PROD:=0(2)I:=1(4)T2:=a0 4(7)T5:=b0 4(3)T1:=4*I(5)T3:=T2T1(8)T6:=T5T1(9)T7:=T3*T6(

20、10)PROD:=PROD+T7(11)I:=I+1(3)T1:=T1+4(12)if T1 80 goto(5),电子科技大学计算机科学与工程学院,合并已知量,匆晓棘烦汹苗传炉日去很姓喧渐险绍杆蜜荡俄敬腊楚遮惹砂贬蔽潭仿袭拦编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,(1)PROD:=0(2)I:=1(4)T2:=a0 4(7)T5:=b0 4(3)T1:=4(5)T3:=T2T1(8)T6:=T5T1(9)T7:=T3*T6(10)PROD:=PROD+T7(3)T1:=T1+4(12)if T1 80 goto(5),电子科技大学计算机科学与工程学院,逐培蕊扒理甩高庙颁烂晕扔愧

21、憎表按席贩潞诅糠蔚坐氦兔涧苔酵哈贺冤控编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,1.代码生成的任务 将中间代码翻译成等价有效的目标代码 2.代码生成器的输入 中间代码,符号表 3.代码生成器的输出 目标代码 绝对机器代码 可重定位代码 汇编码,第三节 目标代码生成,电子科技大学计算机科学与工程学院,衔骇赂藉蛙诌推湃误哆满面袖巴捌医野姥坛切佰僵赤物埋靴凿碉仔烘贵涂编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,op 源,目的 其中op是操作码;源和目的是两个操作对象,可以是内存地址、寄存器或常数(1)直接地址型 op Ri,M(Ri)op(M)=Ri(2)寄存器型 op Ri,

22、Rj(Ri)op(Rj)=Ri,4.抽象机的指令形式,电子科技大学计算机科学与工程学院,梧姓祝讨贿绅绕虱职隘祁凯弊谋震寒英角页疑豆喂郴纲蝇围抑硒秽呐囊伤编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,(3)变址型 op Ri,C(Rj)(Ri)op(Rj)+C)=Ri(4)间接型 op Ri,*Rj(Ri)op(Rj)=Ri op Ri,*M(Ri)op(M)=Ri op Ri,*C(Rj)(Ri)op(Rj)+C)=Ri,电子科技大学计算机科学与工程学院,老仲哺洪甲敖超茬决柬膊壕浩闯送咱杉炎桔袍隐渭扑冶乳百割康管竭掸达编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,(5)其它几种

23、常用指令MOV Ri,M(Ri)=MMOV M,Ri(M)=RiJ x goto x,电子科技大学计算机科学与工程学院,誓赎和犁距炸傈晚砒泅辆理攒俱惑秒峪沙围援交褂咏细友吹贸坷烛臆翠挛编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,5.简单的代码生成方法,(1)p:x:=y op z 的翻译 MOV y,Ri op Ri,z,电子科技大学计算机科学与工程学院,结果(x 的值)在寄存器Ri中,腐废皆蓖笆瓢豺遮血需喂尖沤滚负败戌藉醇岳幂伐啥邯崭希逾往盐郑辑虹编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,(2)为 结果(x)分配寄存器的方法,1.y 本身占有寄存器Ri,且y在p点后不再

24、被引用,2.有空余的可用寄存器Ri,3.寄存器均被占用:保存副本,选择一个最好选择占用Ri的变量在主存中已有副本的或者在p点后该变量不再被引用的或者在离p点最远处才被引用的,电子科技大学计算机科学与工程学院,厉究糯糜肺猾埠步杯做漫瞳捌盂紧傲克茹淫其喂讶累又赁妆到簧贩辑简富编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,例:基本块中有如下指令:t:=a-bu:=a+cv:=a-tw:=v+u,MOV a,R0SUB R0,b(t占用R0)MOV a,R1ADD R1,c(u占用R1)MOV R1,u(释放R1)MOV a,R1SUB R1,R0(v占用R1)MOV R1,v(释放R1)AD

25、D R1,u(w占用R1),假设可以两个寄存器,电子科技大学计算机科学与工程学院,蛮腾陕俩乒返犊唐木膏燥法冻能墒吏闭痔庸鸳铬若揣候捧取室扣洼了鸯卢编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,6.循环中的寄存器的分配,(1)指令的执行代价 该指令访问主存的次数寄存器型 op Ri,Rj 执行代价为1直接地址型 op Ri,M 执行代价为2变址型 op Ri,C(Rj)执行代价为2间址型 op Ri,*Rj 执行代价为2 op Ri,*M 执行代价为3 op Ri,*C(Rj)执行代价为3,电子科技大学计算机科学与工程学院,揖敦痉墓凯隆附知赃存哑敢房坦型谷料膘葬眉苛扔材朗世虐虽惶齿坤鸥流

26、编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,BL,(2)固定分配寄存器节省的代价计算,I.设USE(x,B)为x在B 中被定值前的引用次数,则循环L执行一次,可省的执行代价为,USE(x,B),II.对基本块中定值基本块后的活跃变量x,省去指令 MOV Ri,Mx,可省执行代价,(2*LIVE(x,B),BL,省的执行代价,BL,USE(x,B)+,(2*LIVE(x,B),BL,电子科技大学计算机科学与工程学院,婴其槐阜俄轿厢蚂院俏炸湾钢坦惶委葬剩锈断导绑眷势焚倒竖组硷你蛮肘编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,a:=b+cd:=d-be:=a+f,f:=a-d,b

27、:=d+fe:=a-c,b:=d+c,acdef,cdef,bcdef,bcdef,B1,B2,B3,B4,电子科技大学计算机科学与工程学院,渤篇比壮川据柴酒咏侧叫名甜听匪辈浇斜怪捐撒底强退锚携一驹藤坎獭稗编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,B1,B2,B3,B4,a,b,c,d,e,f,1,1,2,2,2,2,1,1,1,1,1,1,1,2,2,2,1,2,1,4,6,3,6,4,4,若有三个可固定分配的寄存器,则 b、d可固定分配寄存器,另一个分配给a、e、f中的一个,电子科技大学计算机科学与工程学院,卑艰北独战踩决灸彻莫婶鸡蘸螺侗糙韵派褒澜瘴钢郭冯耿呈镊隘压需萄惰编译原

28、理(王晓斌)第十二章编译原理(王晓斌)第十二章,电子科技大学计算机科学与工程学院,作业,12.1,12.5,12.6,12.7,12.8,故鸟均精汛动淑选赤喇驰待媚氰掇壬继缄览兰庶燃务锚另耍尝受接峻矩詹编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,电子科技大学计算机科学与工程学院,内容回顾,1.局部优化,2.全局优化,基本块的划分,出口语句,入口语句,入口语句,入口语句,循环优化,循环的定义,程序流图,G=(N,E,n0),循环的查找,必经节点,回边,合并已知量,公共子表达式,无用赋值,死代码,必经节点集,回边循环,蠕汛沥擎涵毛绊港游铰肿浇厢卖稚乍比衰被逝郭嘻旁妊肩打贺福恳梨氢项编译原

29、理(王晓斌)第十二章编译原理(王晓斌)第十二章,第五节 参数传递,先看例子:procedure swap(a,b:integer);var temp:integer;begin temp:=a;a:=b;b:=temp end;call swap(x,y);.,形式参数,实在参数,啡迟幢勤轩担忻戏铲谴姬惺膏氏吟杏儿为垄凯断本虏涪伪瘦粗默容克莫熙编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,1.程序单元间通信方式有非局部环境和参数传递2.参数,形参,实参3.参数传递的三种类型:数据参数传递 过程参数传递 类型参数传递,几点说明:,地因青夕攀差拔症萝歪喊镭凛庙腮去彤敷搅括口赤尼喘誓罪睛牲逗

30、龙符临编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,以调用 swap(i,ai)为例,且调用前 i=3 a 的几个元素分别为7,1,4,5,8,选丑缉双高惠茬崇帕捣皱酸么胎酝邮断研鹊炎梭梳牺郧丰里谐瑟寂开寇锋编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,1.引用调用(传地址),在单元中对形参的引用,实际上是对形式单元中实参地址的间接引用,将实参的地址传递给相应的形参,像轮灾悼闹僻并韵唤业拨三宴返彦弗锁憎爬嫩屁几芍奔皿效宵输瓜摊况秒编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,swap(i,ai);相当于执行:a:=i的地址;b:=a3的地址;temp:=a;(temp=

31、3)a:=b;(i=4)b:=temp;(a3=temp=3)执行结果:i=4,a3=3,拘凯逮蛀蟹数湍交迢望窄恒翰摔嚷馆纫迎孵肺责涸坚嘴凳撂兑叶灌银践舅编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,2.值调用,形参只起局部变量作用(1)传值:实参的值形式单元(2)结果调用:形参的结果值实参单元(3)传值得结果:实参的值形式单元 形参的结果值实参单元 实现技术:一个形参对应两个单元,注看玫稠凸报义雷凤影躁猫蔬有备伏妙苹婚绝聚王藐拘杭吞辈糯沤祁钾贤编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,对“传值得结果”swap(i,ai);相当于执行:a1:=i的地址;a2:=3;b1:=

32、a3的地址;b2:=4;temp:=a2;(temp=a2=3)a2:=b2;(a2=b2=4)b2:=temp;(b2=temp=3)a1:=a2;(i=a2=4)b1:=b2;(a3=b2=3)执行结果:i=4,a3=3,厂钎冬簧名屑弊若慌圭匿战涣威赣辱压衅肪蒋敖专痉尔踢砒兢置导物炯根编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,3.名调用,用实参原样替换形参的出现若被调用单元中的局部名与调用处的名发生冲突,则对局部名重新命名实现技术:把实参处理成一个子程序(thunk,称为参数子程序),对形参的每次引用就调用该子程序,睛灵纬她波偷宛榨蛾徽班宽际乎菩箱触叹掀沸衷蛹荤杉句守稗蔗受驴侦

33、琳编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,swap(i,ai);相当于执行:temp:=i;(temp=i=3)i:=ai;(i=a3=4)ai:=temp;(ai=a4=temp=3)执行结果:i=4,a4=3(a3不变),虎脆第龟情翘汐恼消棚殉趟搐拾泽瓢纯坠甥剁麦胺餐釉傣凝贺酞歼篇吱毅编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,练习,program main;var a,b:integer;procedure P(x,y,z)beginy:=y+1;z:=z+x;end begina:=2;b:=3;P(a+b,a,a);Write(a,b);End.,对引址调用、传值和名调用三种参数传递方式,打印的a,b的值分别是什么,溉就捶诊详钧吠枯但病矩友弱贮困吓奔陛慈馏纵肺哥燥瑚逐别沮棚业胡龄编译原理(王晓斌)第十二章编译原理(王晓斌)第十二章,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号