欢迎来到天天文库
浏览记录
ID:34533689
大小:810.50 KB
页数:26页
时间:2019-03-07
《北京航空航天大学《编译原理》第12章 编译程序生成方法和工具》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十二章编译程序生成方法和工具••编译程序的书写语言编译程序的书写语言••自编译性自编译性••自展自展••编译程序的移植编译程序的移植••编译程序的自动生成编译程序的自动生成北京航空航天大学计算机学院12.1编译程序的书写语言•机器语言或汇编语言主要优点:编出来的程序效率高。主要缺点:编程效率低,可读性差,不便于修改和移植。•高级程序设计语言已基本取代汇编语言优点:编程效率高,可读性好,利于移植。缺点:编译程运行效率较低。北京航空航天大学计算机学院12.2自编译性自编译性:如果一个高级语言能用来书写自己的编译程序,则该语言具有自编译性,并称该语
2、言为自编译语言。两点说明:1.通常用自编译语言除可编写本语言的编译程序以外,也可用来编写别的语言的编译程序。∴如果某台机器上已配备有某种自编译语言,则可利用这种语言为本台机器配置其它的高级语言。北京航空航天大学计算机学院例:A机上有自编译语言L的编译程序1L.A1OL——语言L的编译程序11A——以A机的机器指令形式给出O利用语言L可为A机生成语言L的编译程序12L.LL.AL.A211O2OL源程序A机L可执行的编译程序12L源程序L.AL目标程序22O2A机可在A机上运行北京航空航天大学计算机学院源语言目标语言书写语言(a)编译程序(b)解
3、释程序(c)计算机(d)程序北京航空航天大学计算机学院LALA2o2oL1LAAo用Ao描述的L2语1o言的编译器L2.Ao用L1写的L语言的A2o编译器L2.L1运行Ao的Ao计算机用Ao描述的L1语言的编译器L1.AoffL2LAAo2oAoAo北京航空航天大学计算机学院2.自编译性不是绝对的,只是强弱不同数据类型丰富的语言自编译性强控制结构丰富的语言数据类型:除一般的外还有字符串类型,数组,结构,枚举,指针等类型。控制结构:应适于进行多分支的程序设计,如有CASE语句等FORTRAN,ALGOL——自编译性差PASCAL,C,ADA,C+
4、+,JAVA——自编译性强实践示例:用PASCAL语言编写一个简单的编译程序,就是利用PASCAL的自编译性。北京航空航天大学计算机学院12.3自展利用高级语言的自编译性,还可以通过自展方式生成语言的编译程序。设L为自编译语言,自展生成L.Ao(A机目标形式的语言L的编译器,可在A机上运行)步骤:1.首先,将语言划分为N个部分:L=L+L+…+L12nL——核心部分1L~L——扩充部分2n北京航空航天大学计算机学院2.先用A机上的汇编编写L的编译程序,L.Aa11L.Aa→Assember→L.Ao113.用L编写L+L的编译程序112(Lo(
5、Lo1+L2).L1L1.A1+L2).A4.用(L+L)编写L+L+L的编译程序12123…5.L.(LoL.Ao1+L2…+Ln-1)(L1+L2…+Ln-1).A北京航空航天大学计算机学院L.Ao…….滚雪球式(L+L).Ao12L.Ao1用自展方式进行编译,可提高生产率。因核心语言小,可用汇编实现。其余部分高级语言编写。比全用低级语言效率高。北京航空航天大学计算机学院12.4编译程序的移植移植:将某台机上的成熟软件移植到另一台机器上,也就是将宿主机上的软件移植到目标机上。具有自编译性的高级语言来书写程序,则移植是方便的。移植L.L宿主机
6、A目标机BL.BoL.Ao通过移植,在B机上可得到语言L的编译程序,具B机目标形式,可在B机上运行。北京航空航天大学计算机学院移植步骤:1.将L.L分为两部分:一部分与机器无关F.L一部分与机器有关A.L∴L.L=F.L+A.L2.根据目标机用语言L改写与具体机器有关的部分:LA.LB.L产生A机代码产生B机代码∴交叉编译器:I.L=F.L+B.L用A机上的L语言所写的能生成B机目标代码的语言L的编译程序。北京航空航天大学计算机学院3.第一次编译将I.L在宿主机A上用L的编译程序进行编译,生成能在宿主机A上运行的语言L的交叉编译器,它能生成目标
7、机B的代码。I.LL.AoI.Ao用L所写的生语言L的交成目标机B宿主机A叉编译器,代码的L语言的L编译能在宿主机交叉编译器源程序A上运行,生程序成目标机B的代码北京航空航天大学计算机学院4.第二次编译(交叉编译)I.LI.AoL.Bo可在目标机BA机上运行并生成目标机B代码的L编译交叉编译程序:在宿主机A上运行,程序但所生成的目标只能在目标机B(另一台机器)上运行。北京航空航天大学计算机学院LBLBooAo语言描述LLAAo的交叉编译器oI.AoL语言描述Ao的交叉编译A器I.Lo可在B机上运行的L语言编译器L.BoLLBBooLLBBooA
8、o语言描述L语言描述Ao的交叉编译器的交叉编译AI.Ao器I.Lo北京航空航天大学计算机学院可以设想,只要在某台机器上为某目标机配置一个L语言的交叉编
此文档下载收益归作者所有