版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Chapter8
IntermediateCode
Intermediatecodegenerationisinthemediatepartofcompiler,itisabridgewhichtranslatesourceprogramintointermediaterepresentationandthentranslateintotargetcode.ThepositionofintermediatecodegenerationincompilerisshowninFigure8.1..
23Therearetwoadvantagesofusingintermediatecode,Thefirstoneisthatwecanattachdifferenttargetcodemachinestosamefrontpartafterthepartofintermediatecodegeneration;;Thesecondoneisthatamachine-independentcodeoptimizercanbeappliedtotheintermediatedrepresentation..
4Intermediatecodesaremachineindependentcodes,buttheyareclosetomachineinstructions.Thegivenprograminasourcelanguageisconvertedtoanequivalentprograminanintermediatelanguagebytheintermediatecodegenerator..
5Intermediatelanguagecanbemanydifferentlanguages,andthedesignerofthecompilerdecidesthisintermediatelanguage.Postfixnotation,four-addresscode(Quadraples),three-addresscode,portablecodeandassemblycodecanbeusedasanintermediatelanguage.Inthischapter,wewillintroducethemindetail.68.1PostfixNotation
Ifwecanrepresentthesourceprogrambypostfixnotation,itwillbeeasytobetranslatedintotargetcode,becausethetargetinstructionorderissamewiththeoperatororderinpostfixnotation..
78.1.1Thedefinitionofpostfixnotation
thepostfixnotationfortheexpressiona+b*cisabc*+.theexpressionareasfollows:
1Theorderofoperandsforexpressioninpostfixnotationissamewithitsoriginalorder.2Operatorfollowsitsoperand,andtherearenoparenthesesinpostfixnotation.3Theoperatorappearsintheorderbythecalculationorder.8Forexample,thepostfixnotationforexpressiona*(b+c/d)isabcd/+*,thetranslationprocedureisjustfollowingthestepsabove..firstly,accordingtostep1wegettheorderofoperandsoftheexpression:abcd,secondly,bythestep2,thefirstoperatorinoperatororderis/,becauseitjustfollowsitsoperandscd,inaddition,asthestep3,operator/iscalculatedfirst,sotheoperatorfollowoperandsis/.Thesecondoperatorinoperatororderis+,itduestothatthereisparenthesesintheoriginalexpression,operator+shouldbecalculatedearlierthanoperator*.Thelastoneis*,because*iscalculatedlastly..
9Theotherexample,thepostfixnotationforexpressiona*b+(c-d)/eisab*cd-e/+.Fromexamples,weknowitisabitdifficulttotranslateanexpressionintoitspostfixnotation.SoscientistE.W.DIJKSTRAfromHolandcreatedamethodtosolvetheproblem..
108.1.2E.W.DIJKSTRAMethod
TherearetwostacksinE.W.DIJKSTRAmethod,onestackstoragesoperands,theotheroneisforoperators,theprocedureofitisshownbyFigure8.2,andthestepofE.W.DIJKSTRAmethodisasfollows:.
11
12Actually,scanningtheexpressionisfromlefttoright.Atthebeginningofscanning,wepushidentifier#tothebottomofoperatorstack,similarly,weaddidentifier#totheendofexpressiontolabelthatitisterminalofexpression.Whenthetwoidentifier#meet,itmeanstheendofscanning.Thestepsofscanningare:
1Ifitisoperand,gototheoperandstack
:
132Ifitisoperator,itshouldbecomparedwiththeoperatoronthetopofoperatorstack.Whenthepriorityofoperatoronthetopstackisbiggerthanthescanningoperator,orequaltoit,theoperatoronthetopofoperatorstackwouldbepoppedandgototheleftside.Ontheotherhandwhenthepriorityofoperatoronthetopstackislessthanthescanningoperator,scanningoperatorshouldbepushedintooperatorstack.143Ifitisleftparenthesis,justpushitintooperatorstack,andthencomparetheoperatorswithinparentheses..Ifitisrightparenthesis,popalltheoperatorswithinparentheses,whatismore,parentheseswouldbedisappearedandwouldnotberepresentedaspostfixnotation..4
Returntostep1tilltwoidentifier#meet.
15Example8.1
Thereisanexpressionofa+b*c,itspostfixnotationisabc*+.FromthetranslatingprocedureshownbyFigure8.3,wecanseethatoperatororderis*+,itisalsothepoporderoftheoperatorstackandcalculatingorder.
1617188.1.3Extendedpostfixnotation
IftheexpressionEisintheformofE1:=E2,thenthepostfixnotationforEis:=,whereandarethepostfixnotationforE1andE2,respectively.Example8.2
Thereisanexpressiona:=b,accordingtothedefinitionabove,itspostfixnotationisab:=.19Example8.3Forexpressiona:=5*(b+8),thepostfixnotationofitis:a5b8+*:=IfThereisaprogramwhichformis:
IFuTHENS1
ELSE……BEGINS2……END20uinthisprogramisaconditionwhichhastworesults,oneistrue,theotheroneisfalse,S1,S2aretwopartsofprogram,l1isthestartnumberofS2,l2istheendnumberofS2..Thepostfixnotationoftheprogramisasfollows:BZmeansifthevalueuisnottrue,thenturntol1,BRmeansjustgotol2.Nowwewillgiveanexampletoexplainthetranslation..
21Example8.4
S:=0;IFi<10THENS:=S+i
ELSE BEGINi:=i+1END;
Thepostfixnotationofexample8.4isasfollows,thevalueofinthisprogramis7,thevalueofis9.S0:=i10<7BZSSi+:=9BR(7)ii1+:=(9)228.2Four-AddressCode
Theotherrepresentationofintermediatecodeisfour-addresscode,anditsdefinitionis:op,y,z,xApplyoperatoroptoyandz,andstoretheresultinx.wherex,yandzarenames,constantsorcompiler-generatedtemporaries;opisanyoperator..
23Example8.5
Theexpression:a+(-b*c+d)*emightbetranslatedintothefollowingfour-addresscodesequence
(1)(-,b,,T1)(2)(*,T1,c,T2)(3)(+,T2,d,T3)(4)(*,T3,e,T4)(5)(+,a,T4,T5)Wecandividefour-addresscodeintodifferenttypesaccordingtotheiroperators.
24BinaryOperator:
op,y,z,resultWhereopisabinaryarithmeticorlogicaloperator.Thisbinaryoperatorisappliedtoyandz,andtheresultoftheoperationisstoredinresult.Forexample:a+b*c,itsfouraddresscodeis:
(*,b,c,T1)(+,a,T1,T2)25UnaryOperator:
op,y,,resultWhereopisaunaryarithmeticorlogicaloperator.Thisunaryoperatorisappliedtoy,andtheresultoftheoperationisstoredinresult.Forexample,expressionS:=0,itsfouraddresscodeis::
(:=,0,,S)26UnconditionalJumps:
op,L,Wewilljumptothethree-addresscodewiththelabelL,andtheexecutioncontinuesfromthatstatement.HereopisBR.Forexample::
(BR,9,,)27ConditionalJumps:
op,L,,xHereopisBZ,wewilljumptothethree-addresscodewiththelabelLiftheresultofxisnottrue,andtheexecutioncontinuesfromthatstatement.Iftheresultistrue,theexecutioncontinuesfromthestatementfollowingthisconditionaljumpstatement..
(BZ,7,,T1)28Thefouraddresscodeforexample8.4:(1)(:=,0,,S)(2)(—,i,10,T1)(3)(BZ,7,,T1)(4)(+,S,i,T2)(5)(:=,T2,,S)(6)(BR,9,,)(7)(+,i,l,T3)(8)(:=,T3,,i)Thestorageforfour-addresscodeissimilarwithpostfixnotation,namely,theyarealluseE.W.DIJKSTRAmethodtorealizetheoperation..
298.3Three-AddressCode
Thedifferencebetweenthree-addresscodeandfour-addresscodeisthedifferentmemorytheyoccupy.Whenweproducetargetcode,allthedatawillbeassignedrun-timememory.Thememorylocationwillbeplacedinthesymbol-tableforthedata.Comparedwiththree-addresscode,symboltableforfour-addresscodeinterposeanextrafieldtostoretheresultpartinfour-addresscode.Whenweusethecalculationresult,weshouldonlylookforthefourthpartinfour-addresscode,however,inthree-addresscode,weshoulddefineatemporaryvaluewhichreferencestotheresultpart.Thisproblemmakesthree-addresscodemoredifficulttobedesignedinanoptimizingcompiler..308.5PortableCode
Portablecodeisakindofintermediatecode,itcanbewrittenbymanyprogramlanguages.Thissection,wewillexplainportablecodewrittenbyPASCALsubprogram..
Portablecodeincludestwosections,oneisPROCEDUREBLOCKwhichformsintermediatecode,theotheroneisPROCEDUREGENwhichgeneratesintermediatecode,andthenstoresittoCODEbyPROCEDUREINTERPRET
31WewillintroducethePROCEDUREGENindetail.ThereisaPASCALsourceprogramwhichisshownbelow..
PROGRAMmain;PROCEDURE1;PROCEDURE2;BEGINREAD(i);WHILEi>1DOBEGINIFi>10THENCALL1ELSE BEGINCALL2END;END;END32Theportablecodeofthesourceprogramisasfollows.33Fromaboveportablecode,thestructureofportablecodeincludesthreeparts,thefirstoneisoperand,suchasINT,
STO,OPR,LOD,JPCandCAL,thesecond
partisthelevelvalue,actuallyitis0,thethird
partisvalue,suchasrelativeaddress,thenumberofunits,procedureenteraddress,valueofconstantorsomespecialoperators..34INTmeansdataspaceinstack.Arepresentsunitnumberinstackforprocedures,forexample,5inline11.CALmeansthatitcallsprocedure.Ainitistheaddressofprocedure.LITispushingconstantintothetopofstack.Ainitisthevalueofconstant.LODispushingvariableintothetopofstack.Ainitistherelativeaddressofvariable.35STOmeanstopopthetopofstacktounit.Ainitistherelativeaddressofit.JMPmeanstogotoanaddressdirectly.JPCistomovetheaddresswhilethevalueonthetopofstackisfalse,otherwiseitmovesforward.OPRisoperator.WhenA=2,itrepresentst
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026暑假陕西咸阳市泾阳县大学生到政府机关见习20人备考题库必考题附答案详解
- 航空业空乘服务客户满意度KPI考核表
- 基于数据驱动的蓄热式铝熔炼炉温实时预测研究
- 基于6-PRSS的锚杆钻机六自由度位姿调整平台研究
- 2025年中国十子板试验扭力系统数据监测报告
- 2025年中国冷冻杏瓣数据监测报告
- 2025年中国光亮淬火油数据监测报告
- 2025年中国二通低压电磁阀数据监测报告
- 2025年中国上顶板翻板车数据监测报告
- 2025年中国PU发泡玩具数据监测报告
- 2026中国农业科学院蔬菜花卉所高层次人才引进11人(北京)笔试题库及完整答案详解一套
- 2026年广东省深圳市中考数学试卷真题及答案解析
- 2026公司安全生产管理制度及文件汇编(2026版)
- 新疆维吾尔自治区2026年中考数学真题
- 2026年检验科质量管理试题及答案
- 2026年心力衰竭管理指南全面解读(临床标准版)
- 2026北师大版小学五年级下册语文期末模拟试卷 两套全套含答案解析
- AI在学前教育中的应用
- 2026年云南校长职级经典例题完整参考答案详解
- 2026年机关单位内部资料性出版物管理题
- 《建设工程高大模板支撑系统施工安全监督管理导则》
评论
0/150
提交评论