編譯原理PPT課件二 中間代碼.ppt

編譯原理PPT課件二 中間代碼.ppt

ID:51619197

大小:114.50 KB

頁(yè)數(shù):11頁(yè)

時(shí)間:2020-03-26

編譯原理PPT課件二 中間代碼.ppt_第1頁(yè)
編譯原理PPT課件二 中間代碼.ppt_第2頁(yè)
編譯原理PPT課件二 中間代碼.ppt_第3頁(yè)
編譯原理PPT課件二 中間代碼.ppt_第4頁(yè)
編譯原理PPT課件二 中間代碼.ppt_第5頁(yè)
資源描述:

《編譯原理PPT課件二 中間代碼.ppt》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

1、何謂中間代碼:源程序的一種內(nèi)部表示,不依賴(lài)目標(biāo)機(jī)的結(jié)構(gòu),易于機(jī)械生成目標(biāo)代碼的中間表示。為什么要此階段主要優(yōu)點(diǎn)是可移植(與具體目標(biāo)程序無(wú)關(guān)),且易于目標(biāo)代碼優(yōu)化中間代碼的幾種形式逆波蘭、N-元表示(四元式、三元式)、樹(shù)、抽象機(jī)代碼第8章中間代碼(源程序的中間形式)例:A+B*(C-D)+E/(C-D)^N逆波蘭:ABCD-*+ECD–N^/+四元式:(1)(-CDT1)(2)(*BT1T2)(3)(+AT2T3)(-CDT4)(^T4NT5)(6)(/ET5T6)(7)(+T3T6T7)三元式:(1)(-CD)(2)(*B(1))(3)(+A

2、(2))(4)(-CD)(5)(^(4)N)(6)(/E(5))(7)(+(3)(6))if語(yǔ)句的波蘭表示:有如下if語(yǔ)句:ifthenelse波蘭表示為:BZBRBZ:二目操作符,如果的計(jì)算結(jié)果為0,則產(chǎn)生一個(gè)的轉(zhuǎn)移,而label1是的頭一個(gè)符號(hào)BR:一目操作符,它產(chǎn)生一個(gè)的轉(zhuǎn)移,而是一個(gè)緊跟在后面的符號(hào)(即是if語(yǔ)句后的第一個(gè)語(yǔ)

3、句的頭一個(gè)符號(hào))8.1中間代碼的幾種形式——波蘭表示由if語(yǔ)句的波蘭表示可生成如下的目標(biāo)程序框架:BZlabel1BRlabel2label1:label2:其他語(yǔ)言結(jié)構(gòu)很容易將其翻譯成波蘭表示,使用波蘭表示優(yōu)化不是十分方便。波蘭表示為:BZBRX-yBZ,label1Z:=XBR,label2Label:Z:=Y+1Label2:M=z+2:例:Ifx>ythenz:=xelsez:=y+1;M=z+2;有如下if語(yǔ)句:if

4、pr>thenelse在該表示中,每條指令由n個(gè)域所組成,通常第一個(gè)域表示運(yùn)算符,其余操作符。常用的n元表示是:三元式四元式三元式:運(yùn)算符左操作符右操作符表達(dá)式的三元式:w*x+(y+z)(1)*,w,x(2)+,y,z(3)+,(1),(2)第三個(gè)三元式中的操作數(shù)(1)(2)表示第(1)和第(2)條三元式的計(jì)算結(jié)果。8.1中間代碼的幾種形式——N-元表示條件語(yǔ)句的三元式:Ifx>ythenz:=x;elsez:=y+1;-,x,yBZ,(1),(5):=,Z,XBR,,(7)+,Y,1:=,Z,(5)::其中:B

5、Z:是二目(元)操作符,測(cè)試第二個(gè)域的值,若<0,則按第3個(gè)域的地址轉(zhuǎn)移,若為正值則該指令作廢。BR:一目(元)操作符,按第3個(gè)域作無(wú)條件轉(zhuǎn)移。使用三元式不便于代碼優(yōu)化因?yàn)閮?yōu)化要?jiǎng)h除一些三元式,或?qū)δ承┤降奈恢靡M(jìn)行變更,由于三元式的結(jié)果(表示為編號(hào)),可以是某個(gè)三元式的操作數(shù),隨著三元式位置的變更也將作相應(yīng)的修改,很費(fèi)事。間接三元式:為了便于在三元式上作優(yōu)化處理,可使用間接三元式三元式的執(zhí)行次序用另一張表表示,這樣在優(yōu)化時(shí),三元式可以不變,而僅僅改變其執(zhí)行順序表。例:A:=B+C*D/EF:=C*D用間接三元式表示為:操作三元式1.(1

6、)(1)*,C,D2.(2)(2)/,(1),E3.(3)(3)+,B,(2)4.(4)(4):=,A,(3)5.(1)(5):=,F,(1)6.(5)三元式的執(zhí)行次序用另一張表表示,這樣在優(yōu)化時(shí),三元式可以不變,而僅僅改變其執(zhí)行順序表。四元式表示:操作符操作數(shù)1操作數(shù)2結(jié)果結(jié)果:通常是由編譯器分配的臨時(shí)變量,可由編譯程序做一個(gè)寄存器或主存單元。例1:(A+B)*(C+D)-E+,A,B,T1+,C,D,T2*,T1,T2,T3一,T3,E,T4式中,T1,T2,T3,T4為臨時(shí)變量四元式優(yōu)化比較方便簡(jiǎn)單賦值語(yǔ)句的(四元式)翻譯四元式形式:t

7、=arg1oparg2語(yǔ)義屬性:id.name,E.place函數(shù):lookup(id.name);過(guò)程:emit(t:=arg1oparg2);t:newtemp;產(chǎn)生式和語(yǔ)義描述:(1)A?id=E{P=lookup(id.name);ifP?nilthenemit(P“:=”E.place)elseerror}(2)E?E1+E2{E.place:=newtemp;emit(E.place“:=”E1.place“+”E2.place)}(3)E?-E1{E.place:=newtemp;emit(E.place“:=”“uminus”

8、E1.place)}(4)E?(E1){E.place:=E1.place}(5)E?id{E.place:=newtemp;P:=lookup(id.name);

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶(hù)上傳,版權(quán)歸屬用戶(hù),天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶(hù)請(qǐng)聯(lián)系客服處理。