編譯原理 中間代碼優(yōu)化

編譯原理 中間代碼優(yōu)化

ID:47536859

大?。?38.00 KB

頁數(shù):21頁

時(shí)間:2020-01-14

編譯原理 中間代碼優(yōu)化_第1頁
編譯原理 中間代碼優(yōu)化_第2頁
編譯原理 中間代碼優(yōu)化_第3頁
編譯原理 中間代碼優(yōu)化_第4頁
編譯原理 中間代碼優(yōu)化_第5頁
資源描述:

《編譯原理 中間代碼優(yōu)化》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫

1、實(shí)驗(yàn)三中間的代碼優(yōu)化某些編譯程序在中間代碼或目標(biāo)代碼生產(chǎn)之后要對其進(jìn)行優(yōu)化,所謂優(yōu)化就是對代碼進(jìn)行等價(jià)的變換。而變換后的代碼運(yùn)行結(jié)果與變換前的代碼運(yùn)行結(jié)果相同。而運(yùn)行速度加快或占用內(nèi)存空間減少。中間的代碼優(yōu)化就是對中間代碼進(jìn)行等價(jià)的變換?;緣K的有向圖DAG(DirectedAcyclicGraph)有向圖中任何一條通路都不是環(huán)路,則稱該有向圖為無環(huán)路有向圖,簡稱為DAG。一、實(shí)驗(yàn)題目:中間代碼的局部優(yōu)化二、實(shí)驗(yàn)?zāi)康模赫莆站植績?yōu)化方法、提高機(jī)器的運(yùn)行速度三、實(shí)驗(yàn)內(nèi)容:1、構(gòu)造基本塊內(nèi)的優(yōu)化DAG假設(shè):(1)ni為已知結(jié)點(diǎn)號,n

2、為新結(jié)點(diǎn)號;(2)訪問各結(jié)點(diǎn)信息時(shí),按結(jié)點(diǎn)號逆序排序2、完成對下例三類表達(dá)式的優(yōu)化(1)常值表達(dá)式的優(yōu)化(2)公共表達(dá)式的優(yōu)化(3)無用賦值的優(yōu)化3、輸出根據(jù)優(yōu)化的DAG重組四元式四、設(shè)計(jì)概要:首先要實(shí)現(xiàn)表達(dá)式中間代碼生成,采用遞歸下降子程序法實(shí)現(xiàn)。E→T{ω0“push(SYN,w)”T“QUAT”}T→F{ω1”push(SYN,w)”F“QUAT”}F→i“push(SEM,entry(w))”

3、(E)其中:·push(SYN,w)---當(dāng)前單詞w入符號棧SYN;·push(SEM,entry(w))---當(dāng)前i在符號表

4、中的入口值壓入語義棧SEM;·QUAT---生成四元式函數(shù)①T:=newtemp;②QT[j]=(SYN[k],SEM[s-1],SEM[s],T);j++;③pop(SYN,_);pop(SEM,_);pop(SEM,_);push(SEM,T);在對中間代碼進(jìn)行局部優(yōu)化五、程序代碼及運(yùn)行結(jié)果:1.表達(dá)式中間代碼生成#include#includeusingnamespacestd;charstr[50];charsem[50];charsyn[50];charch;inti=0;int

5、j=0;intn=0;intp=1;voidpush_sem(charw){sem[j++]=w;}voidpush_syn(charw){syn[n++]=w;}voidGen(){chars[2][2];charw;w=sem[--j];if(w>='1'&&w<='9'){s[0][1]=w;s[0][0]=sem[--j];}else{s[0][0]=w;s[0][1]='';}w=sem[--j];if(w>='1'&&w<='9'){s[1][1]=w;s[1][0]=sem[--j];}else{s[1][0]=

6、w;s[1][1]='';}cout<<"("<='a'&

7、&ch<='z')

8、

9、(ch>='1'&&ch<='9')){push_sem(ch);ch=str[i++];}else{//cout<<"表達(dá)式error!"<

10、);ch=str[i++];l=F();if(l==0){return0;}Gen();}elsebreak;}return1;}intE(){intk,m,l;k=T();if(k==0){return0;}while(1){//push_syn(ch);if(ch=='+'){push_syn(ch);ch=str[i++];m=T();if(m==0){return0;}Gen();}elseif(ch=='-'){push_syn(ch);ch=str[i++];l=T();if(l==0){return0;}Gen(

11、);}elsebreak;}return1;}intmain(){intk,q=0;charw1,w2,w;chars[1][2];cout<<"輸入表達(dá)式(以'#'結(jié)束):";cin>>str;w1=str[i++];w2=str[i++];if(w2!='='){i=i-

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

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

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