編譯原理 中間代碼生成.ppt

編譯原理 中間代碼生成.ppt

ID:48091052

大?。?03.00 KB

頁數(shù):59頁

時間:2020-01-11

編譯原理 中間代碼生成.ppt_第1頁
編譯原理 中間代碼生成.ppt_第2頁
編譯原理 中間代碼生成.ppt_第3頁
編譯原理 中間代碼生成.ppt_第4頁
編譯原理 中間代碼生成.ppt_第5頁
資源描述:

《編譯原理 中間代碼生成.ppt》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在行業(yè)資料-天天文庫。

1、第八章中間代碼生成學習內(nèi)容三地址碼表示方法聲明語句的翻譯賦值語句的翻譯:數(shù)組尋址布爾表達式的翻譯case語句的翻譯backpatching技術的實現(xiàn)過程調(diào)用的翻譯8.1中間語言8.1.1圖表示a:=b*-c+b*-c語法樹方式表示后綴表示——語法樹的線性表示方式abcuminus*bcuminus*+assign語法制導定義構造語法樹PRODUCTIONSemanticRuleS?id:=E{S.nptr=mknode(‘a(chǎn)ssign’,mkleaf(id,id.entry),E.nptr)}E?E1+E2{E.nptr=mknode(‘+’,E1.nptr,E2.np

2、tr)}E?E1*E2{E.nptr=mknode(‘*’,E1.nptr,E2.nptr)}E?-E1{E.nptr=mknode(‘uminus’,E1.nptr)}E?(E1){E.nptr=E1.nptr}E?id{E.nptr=mkleaf(id,id.entry)}語法樹的計算機內(nèi)部表示8.1.2三地址碼Three-AddressCode一般形式:x:=yopz語法樹、dag的線性化表示t1:=-ct1:=-ct2:=b*t1t2:=b*t1t3:=-ct5:=t2+t2t4:=b*t3a:=t5t5:=t2+t4a:=t58.1.3三地址碼語句類型二元運算

3、:x:=yopz一元運算:x:=opy復制語句:x:=y無條件轉(zhuǎn)移:gotoL條件轉(zhuǎn)移:ifxrelopygotoL函數(shù)調(diào)用:paramx1paramx2… paramxncallp,n數(shù)組:x:=y[i],x[i]:=y指針:x:=&y,x:=*y語法制導翻譯生成三地址碼賦值語句:id:=E利用屬性E.place:保存E的值的名字E.code:計算E的三地址代碼newtemp:生成臨時變量名gen:輸出一條三地址碼指令賦值語句的翻譯PRODUCTIONSemanticRuleS?id:=E{S.code=E.code

4、

5、gen(id.place‘:=’E.place)

6、}E?E1+E2{E.place=newtemp;E.code=E1.code

7、

8、E2.code

9、

10、

11、

12、gen(E.place‘:=’E1.place‘+’E2.place)}E?E1*E2{E.place=newtemp;E.code=E1.code

13、

14、E2.code

15、

16、

17、

18、gen(E.place‘:=’E1.place‘*’E2.place)}E?-E1{E.place=newtemp;E.code=E1.code

19、

20、

21、

22、gen(E.place‘:=’‘uminus’E1.place)}E?(E1){E.place=E1.place;E.code=E1.code}E

23、?id{E.place=id.entry;E.code=‘’}控制流語句的翻譯while語句:S?whileEdoS1翻譯為S.begin:E.codeifE.place=0gotoS.afterS1.codegotoS.beginS.after:語法制導定義:S.begin=newlabel;S.after=newlabel;S.code=gen(S.begin‘:’)

24、

25、E.code

26、

27、gen(‘if’E.place‘=’‘0’‘goto’S.after)

28、

29、S1.code

30、

31、gen(‘goto’S.begin)

32、

33、gen(S.after‘:’)8.1.5三地址碼的

34、實現(xiàn)四元組,三元組三元運算的實現(xiàn)——拆分x[i]:=yx:=y[i]間接三元組實現(xiàn)方式8.2聲明語句的翻譯8.2.1過程內(nèi)部的聲明PRODUCTIONSemanticRuleP?MD{}M??{offset:=0}D?id:T{addtype(id.entry,T.type,offset)offset:=offset+T.width}T?char{T.type=char;T.width=4;}T?integer{T.type=integer;T.width=4;}T?array[num]ofT1{T.type=array(num.val,T1.type) T.width

35、=num.val*T1.width}T?^T1{T.type=pointer(T1.type);T1.width=4}8.2.2作用域的處理處理作用域的翻譯模式P?MD{addwidth(top(tblptr),top(offset));pop(tblptr);pop(offset)}M??{t:=mktable(null);push(t,tblptr);push(0,offset)}D?D1;D2D?procid;ND;S{t:=top(tblpr);addwidth(t,top(offset));pop(tblptr);pop(off

當前文檔最多預覽五頁,下載文檔查看全文

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

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