版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、中間代碼基本塊的劃分任務(wù)要求在理解代碼優(yōu)化原理的基礎(chǔ)上,實(shí)現(xiàn)將中間代碼序列劃分基本塊的程序1 理解編譯過(guò)程中代碼優(yōu)化的定義2 掌握各種代碼優(yōu)化的方法3 定義程序流圖中的基本塊4 明確程序流圖的形式及功能5 程序設(shè)計(jì)及調(diào)試一原理闡述1. 代碼優(yōu)化的定義:代碼優(yōu)化的實(shí)質(zhì)就是提高代碼質(zhì)量從而加快代碼執(zhí)行速度的一種技術(shù)。 根據(jù)代碼優(yōu)化是否涉及具體的計(jì)算機(jī),又將代碼優(yōu)化分為與機(jī)器有關(guān)的優(yōu)化(即窺孔優(yōu)化),一般在目標(biāo)代碼上進(jìn)行;與機(jī)器無(wú)關(guān)的優(yōu)化,常在中間代碼上進(jìn)行。又根據(jù)優(yōu)化范圍分成局部?jī)?yōu)化、 循環(huán)優(yōu)化、全局優(yōu)化。2. 代碼優(yōu)化的方法5) 合并已知量6) 復(fù)寫傳播7) 刪除無(wú)用賦值1) 刪除公共子表達(dá)式2
2、) 代碼外提3) 強(qiáng)度削弱4) 刪除歸納變量3. 基本塊和劃分基本塊的定義和方法:定義: 基本塊就是代碼序列中一組順序執(zhí)行的語(yǔ)句序列,只有一個(gè)入口和一個(gè)出口。 而劃分基本塊的實(shí)質(zhì)就是定義入口和出口語(yǔ)句。劃分基本塊的方法:1) 定義入口語(yǔ)句四元式的第一個(gè)語(yǔ)句;由條件轉(zhuǎn)移語(yǔ)句或無(wú)條件轉(zhuǎn)移語(yǔ)句能轉(zhuǎn)到的語(yǔ)句;緊跟在條件轉(zhuǎn)移語(yǔ)句后面的語(yǔ)句。2) 定義出口語(yǔ)句 下一個(gè)入口語(yǔ)句的前導(dǎo)語(yǔ)句; 轉(zhuǎn)移語(yǔ)句(包括轉(zhuǎn)移語(yǔ)句本身); 停語(yǔ)句(包括停語(yǔ)句本身)。構(gòu)造基本塊,刪除不屬于任何基本塊的語(yǔ)句流程示意圖中間唐句,按四元式序列,給出如下程序流圖 read x ; read y ;(4) if c=0 goto L2
3、; x=y ; L1:c=c+1 ; y=c ; goto L1 ; L2: write y ;halt (以表本)三.部分代碼:入口條件1int i=0,j=-1,back_i=0,in_num=0,out_num=0;char g200;cout<<"請(qǐng)輸入要進(jìn)行基本塊劃分的四元式(按回車表示四元式輸入完畢):"<<endl;for(i=0;i<200;i+)gi='';ci尸';g口(局部),c(全局)清零gets(g);/輸入四元式for(i=0;i<200;i+)ci=gi;/ 將輸入的四元式備份到c口i
4、nin_num+尸1'/首句為入口語(yǔ)句,將語(yǔ)句序號(hào)放入in口-可編輯修改-入口條件 3for(i=0;*(g+i)!=''i+)/ 由條件轉(zhuǎn)移語(yǔ)句或無(wú)條件轉(zhuǎn)移語(yǔ)句能轉(zhuǎn)到的語(yǔ)句為入口語(yǔ)句if(*(g+i)=':')/ 找到轉(zhuǎn)移語(yǔ)句能轉(zhuǎn)到的語(yǔ)句back_i=i;/i 是指針, back_i 記錄當(dāng)前位置,用于搜索語(yǔ)句序號(hào)for (;*(g+back_i)!=')'back_i-)continue;inin_num+=*(g+back_i-1);/ 得到入口語(yǔ)句序號(hào),將其放入 in出口條件 1outout_num+=(char)(int)*(g
5、+back_i-1)-1);break;/ 入口語(yǔ)句的上一句是出口語(yǔ)句,將其序號(hào)放入 outcout<<""<<endl<<endl;cout<<" 判定輸出語(yǔ)句 /輸入語(yǔ)句過(guò)程(輸出語(yǔ)句 > 輸入語(yǔ)句) :"<<endl<<endl;for(;j!=0;j+)cout<<"sentence ("<<outout_num-1<<") -> ("<<inin_num-1<<&
6、quot;)"<<endl;-可編輯修改-for(i=0;*(g+i)!=''i+)語(yǔ)句if(*(g+i)='i'&&*(g+i+1)='f')back_i=i;for(;*(g+back_i)!='('back_i+)語(yǔ)句continue;inin_num+=*(g+back_i+1);出口條件for(i=0;*(g+i)!=''i+)if(*(g+i)='g'&&*(g+i+1)='o')back_i=i;for(;*(g+b
7、ack_i)!=')'back_i-)continue;/ 緊跟在條件語(yǔ)句后面的語(yǔ)句為入口/ 找到條件語(yǔ)句關(guān)鍵字if/ 找到條件語(yǔ)句的下一句,即入口/ 將入口語(yǔ)句序號(hào)放入 in2/ 轉(zhuǎn)移語(yǔ)句為出口語(yǔ)句/ 找到轉(zhuǎn)移語(yǔ)句的關(guān)鍵字goto/將語(yǔ)句序號(hào)放入outoutout_num+=*(g+back_i-1);inin_num+=(char)(int)*(g+back_i-1)+1);/其下一句是入口語(yǔ)句,將語(yǔ)句序號(hào)放入in口for(;j<1;j+)cout<<"sentence("<<outout_num-1<<&quo
8、t;)->-可編輯修改-("<<inin_num-1<<")"<<endl;for(;*(g+back_i)!='L'back_i+)/找到轉(zhuǎn)移語(yǔ)句能夠轉(zhuǎn)到的語(yǔ)句序continue;for(;*(c+ch)!=''ch+)for(;*(c+ch)!='L'ch+) continue; if(*(g+back_i+1)=*(c+ch+1)&&back_i!=ch)根據(jù)語(yǔ)句序號(hào)找到相應(yīng)的語(yǔ)句back_ch=ch;for(;*(c+back_ch)!=')&
9、#39;back_ch-)continue;cout<<"sentence("<<outout_num-1<<")->("<<*(c+back_ch-1)<<")"<<endl; break;/輸出轉(zhuǎn)移ch=0;)出口條件3for(i=0;*(g+i)!=''i+)continue;back_i=i;for(;*(g+back_i)!=')'back_i-)continue;outout_num+=*(g+back_i-1);
10、cout<<"cout<<"劃分好的代碼塊:"<<endl;停語(yǔ)句為出口語(yǔ)句,找到停語(yǔ)句/將語(yǔ)句序號(hào)放入out"<<endl<<endl;for(i=0;i<4;i+)cout<<"Block ”<<i+1<<" : ("<<ini<<") - ("<<outi<<")"<<endl;/輸出各基本塊內(nèi)的語(yǔ)句四.程序運(yùn)行結(jié)果1.運(yùn)行輸入的四元式:2.輸出結(jié)果:劃分好的基本代碼塊五.總結(jié)這次我主要負(fù)責(zé)中間代碼基本塊的劃分。有了上次詞法分析器的程序設(shè)計(jì)的經(jīng)驗(yàn),我以書(shū)中的實(shí)例為參考模型,進(jìn)行編程,這樣就避免了由空想帶來(lái)的不必要的麻煩。整個(gè)設(shè)計(jì)還是以C+ +中的模塊化設(shè)計(jì)為主。 特別是在語(yǔ)句類型判斷上, 在編寫代碼時(shí), 雖然只要遵守判斷規(guī)則, 但仍然遇上了不困難,為了能方便的分塊,使程序能更加簡(jiǎn)便、易懂, 我還自行將語(yǔ)句按
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 帶貨主播試用期轉(zhuǎn)正工作總結(jié)(6篇)
- 初級(jí)焊工安全知識(shí)培訓(xùn)
- 連續(xù)性血液凈化治療腎衰竭合并重癥心力衰竭的價(jià)值
- 智研咨詢-中國(guó)數(shù)字生活行業(yè)市場(chǎng)調(diào)查、產(chǎn)業(yè)鏈全景、需求規(guī)模預(yù)測(cè)報(bào)告
- 車載SINS-GNSS緊組合導(dǎo)航系統(tǒng)研究
- 基于混合樣本的對(duì)抗對(duì)比域適應(yīng)算法及理論
- 產(chǎn)前檢查科護(hù)士的工作概覽
- 打造專業(yè)化服務(wù)團(tuán)隊(duì)的目標(biāo)計(jì)劃
- 二零二五年度商業(yè)綜合體物業(yè)施工安全管理合同范本3篇
- 2025版物流運(yùn)輸車隊(duì)與保險(xiǎn)企業(yè)合作合同3篇
- 2019年420聯(lián)考《申論》真題(山西卷)試卷(鄉(xiāng)鎮(zhèn)卷)及答案
- 醫(yī)院投訴糾紛及處理記錄表
- 人教版(新插圖)二年級(jí)下冊(cè)數(shù)學(xué) 第4課時(shí)用“進(jìn)一法”和“去尾法”解決簡(jiǎn)單的實(shí)際問(wèn)題 教學(xué)課件
- YY/T 0698.5-2023最終滅菌醫(yī)療器械包裝材料第5部分:透氣材料與塑料膜組成的可密封組合袋和卷材要求和試驗(yàn)方法
- 【深度教學(xué)研究國(guó)內(nèi)外文獻(xiàn)綜述2100字】
- 甘肅省平?jīng)鍪徐o寧一中2024屆生物高一上期末監(jiān)測(cè)模擬試題含解析
- 新人教版四年級(jí)下冊(cè)數(shù)學(xué)教材解讀課件
- 烏龜圖管理大全課件
- 竣工資料封面
- 中央空調(diào)售后服務(wù)普及培訓(xùn)螺桿機(jī)篇
- 中國(guó)航天知識(shí)
評(píng)論
0/150
提交評(píng)論