版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2014/繼承屬性的模擬求類型檢符號(hào)運(yùn)行 組中間代碼生1 2014/從上面的討論可知,分析棧中繼承屬性的是通 2014/SaA{C.i:=A.s}CbAB{C.i:=A.s}Cc{C.s:=若直接應(yīng)用上述復(fù)寫規(guī)則的處理方法,則在使Cc進(jìn)行約時(shí),C.i的值或存在棧頂(top-1),或存在次棧頂(top-一種可行的做法是引入新的非終結(jié)符M,將以上翻譯方案改造為SaA{C.i:=A.s}CbAB{M.i:=A.s}M{C.i:=M.s}Cc{C.s:=Mε{M.s:=M.i這樣,在使用Cc進(jìn)行歸約時(shí),C.i的值就一定可以通過次棧2014/SaA{C.i:=f(A.s)}這里,繼承C.i不是通過復(fù)寫規(guī)則來求值,而是通過普通函數(shù)f(A.s)調(diào)用來計(jì)算.在計(jì)算C.i時(shí),A.s在語義棧上,但f(A.s)并未同樣,一種做法是引入新的非終結(jié)符M,將以上翻譯方案SaA{M.i:=A.s}M{C.i:=M.s}Mε{M.s:=這樣,就解決了上述注:從翻譯方案中去掉嵌在產(chǎn)生式中間的語義規(guī)則集時(shí),若語義
2014/ 2014/ 2014/靜態(tài)語義分析的主要工類型檢查(type控制流檢查(flow-of-control控制流語句必須使控制轉(zhuǎn)移到合法的地方(如唯一性檢查(uniquenesschecks)很多場(chǎng)合要求對(duì)名字相關(guān)檢查(name-related(如,一些名字可能被要求配對(duì)出現(xiàn) 2014/語義處理的環(huán)符號(hào)表(symbol類型檢查 生器記號(hào) 語法 語法 表生器 2014/Chapter 2014/符號(hào)表的作符號(hào)表的常見屬關(guān)于符號(hào)表的操符號(hào)表的實(shí)2014/符號(hào)表的作 符號(hào)表的常見屬 2014/關(guān)于符號(hào)表的操
2014/符號(hào)表的實(shí)標(biāo)號(hào)表,等等 符號(hào)表的實(shí)Hash符號(hào)表的實(shí)classlocal作用域的符號(hào) (1)class
global作用域的符號(hào)
作用作用域Mac類的描Mac類成員符號(hào)Computer類的描Computer類成員符號(hào)略略(7)
intvoidCrash(intnTimes){inti;…}classMacextendsComputerint}voidmain()(15)
classMacpowerbook;…2014/運(yùn)行 組織的作用與任程序在器中的布分配策活動(dòng)記回收 運(yùn)行 組織的作用與任數(shù)據(jù)表示分配表達(dá)式計(jì) 如何組織表達(dá)式的計(jì)過程實(shí)現(xiàn)數(shù)據(jù)表成分(component),偏移地址(offset),數(shù)據(jù)表示舉char1integer4float8boolean1bit/1指針4數(shù)組一塊連續(xù) 結(jié)構(gòu)/記錄所有域(field)存放在一塊連續(xù) 對(duì)象 2014/StackHeapFreeStaticStackHeapFreeStatic
LowestHighest2014/分配策在編譯期間將數(shù)據(jù)對(duì)象的運(yùn)行 按照棧的方式來管從數(shù)據(jù)段的堆空間分配和釋放數(shù)據(jù)對(duì)象的靜 分如匯編語言,F(xiàn)ORTRAN語可靜態(tài)分配的數(shù)據(jù)對(duì)象如大小固定且在程序執(zhí)行期間可全程的全局變量,以及程序中的常量,cstans)如C語言中的static和extern棧 分堆 分靈活數(shù)據(jù)對(duì)象 分配和釋放不限時(shí)間和次顯式的分配或釋放(explicitallocation 隱式的分配或釋放(implicitallocation 堆 分 最先適應(yīng)算法(選擇最先找到的足夠大 塊碎片整理算 壓縮合并小 塊,使其更可(部分內(nèi)容可參考數(shù)據(jù)結(jié)構(gòu)和操作系統(tǒng)課程+偏移地址+偏移地址(通常存于某寄存器中活動(dòng)記voidp()q();
q被第二次激活時(shí)運(yùn)qqqpmainvoidq()q();}intmainp(}活動(dòng)記
TOP(棧頂寄存器SP(基址寄存器活動(dòng)記解決對(duì)非局部量 (存取采用Display為活動(dòng)記錄增加靜態(tài)鏈2014/活動(dòng)記采用DisplayDisplay寄存器表(簡(jiǎn)稱Display表)記錄各嵌套層當(dāng)前過程的活動(dòng)記錄在運(yùn)行棧上的起始位置(址)當(dāng)前激活過程的層次為(主程序的層次設(shè)為),則對(duì)應(yīng)的spy表含有K+1個(gè)單元,依次存放著現(xiàn)行層,直接外層直至最外層的每一過程的動(dòng)記錄的址嵌套作用域規(guī)則確保每一時(shí)刻DisplayDisplay表的大小(即最多嵌套的層數(shù))取決于實(shí)活動(dòng)記Display表方案R被第一次激活后運(yùn)行Display寄存D[i的情S的活動(dòng)記Q的活動(dòng)記R的活動(dòng)記
programMain(I,O);procedureP;procedureQ;procedureR; …R;… …Q;… procedureS;…P;… …S;… 活動(dòng)記Display表的(過程被調(diào)用和返回時(shí)的保存和恢復(fù) 的方法是把整個(gè)Display表存入活動(dòng)記錄若過程為第n層,則需要保存D[0]~D[n])一個(gè)過程被調(diào)用時(shí),從調(diào)用過程的Display表中自下向上抄錄n個(gè)SP值,再加上本層的SP值方法二只在活動(dòng)記錄保存一個(gè)Display活動(dòng)記Display表 舉保存完整的全局DisplayR的活R的活動(dòng)記錄全局DisplayQ的活動(dòng)記錄P的活動(dòng)記錄S的活動(dòng)記
programMain(I,O);procedureP;procedureQ;procedureR; …R;… …Q;… procedureS;…P;… …S;… 活動(dòng)記采用靜態(tài)鏈(staticDisplay表的方法要用到多個(gè)寄存器,有時(shí)并不情愿這樣做(寄存器資源很寶貴)一種可選的方法是采用靜態(tài)鏈,只保留一個(gè)寄存器(即SP)指向當(dāng)前AR所有活動(dòng)記錄都增加一個(gè)靜態(tài)鏈(如在offset0處)AR要被撤銷。為回卷(unwind)(靜態(tài)鏈/鏈:SL,動(dòng)態(tài)鏈/控制鏈:DL活動(dòng)記采用靜態(tài)鏈的方法
programMain(I,O);procedureP;procedureQ;procedureR; …R;
R的活動(dòng)記錄Q的活動(dòng)記錄P的活動(dòng)記錄S的活動(dòng)記錄
態(tài)…Q;態(tài) procedure…P;… …S;… 2014/器記號(hào) 器–用語法制導(dǎo)定義和翻譯方案的方法來2014/中間代中間代碼的形 syntaxtree,抽象語法樹DAG(DirectedAcyclicGraph,有向無圈圖TAC(Three-addresscode,三地址碼,四元式P-code(特別用于Pascal語言實(shí)現(xiàn) 2014/三地址碼順序的語句序列其語句一般具有如下x:=yop(op為操作碼,y和z為操作符,x為結(jié)果 xyz翻譯成的三地址語句序列是t1:=yzt2:=x+ 2014/中間代碼舉算術(shù)表達(dá)式AB*CDECDTAC(Three-addresscode,三地址碼,四元式CDT1:=CDT1:=C-BT2:=B*ACD或T3:=A+T4:=C-((NT5NT5:=T4^ET6:=E/T7:=T3+((20142014/ 過程中說明語句的語法制導(dǎo)翻id的詞法名字(符號(hào)表中的名字T.typeT.width數(shù)據(jù)寬度(字節(jié)數(shù)offset:相對(duì)于過程數(shù)據(jù)區(qū)基址的下一個(gè)可用的相enter(,T.type,offset): typeT.type,20142014/過程中說明語句的語法制導(dǎo)翻P{offset:=0}D;SDD1;D2Did offset:=offset+T.widthTTTTarray[num]ofT1TT1S
{T.type:=char;T.width:=1{T.type:=integer;T.width:=4{T.type:=real;T.width:=8{T.type:=array(num.val,T1.type);T.width:=num.valT1.width}{T.type:=pointer(T1.type)T.width:=4 2014/賦值語句的語法制導(dǎo)翻id的詞法名字(符號(hào)表中的名字E.place用來存放EE.code:E求值的TAC的項(xiàng),返回存放相應(yīng)值的指針,若無該項(xiàng),則返回genTACnewtempt 2014/產(chǎn)生 語義規(guī)Sid:=EE1+E2EE1E-E(E1E
S.code:=E.code||gen(‘:=‘E.place:=E.code:=E1.code||E2.codegen(E.place‘:=‘E1.place‘+’E2.place)E.place:=newtemp;E.code:=E1.code||E2.codegen(E.place‘:=‘E1.place‘’E.place:=newtemp; E.code:=E1.code||gen(E.place‘:=‘‘uminus‘E1.place)E.place:=E1.place;E.code:=E1.codeE.place:=id.place;E.code:=2014/符號(hào)表中的名Sid:= {p:=ifpnilemit(p,‘:=’,E.place)elseerror}EE1+{E.place:=emit(E.place,‘:=’,E1.place,‘+’,E2.place)EE1{E.place:=emit(E.place,‘:=’,‘uminus’,E1.place)E(E1){E.place:=E1.placeE {p:=ifpnilthenE.place:=pelseerror 數(shù)組元素的地址計(jì)
2014/一維數(shù)組A的第i個(gè)元素的地址計(jì)base+(ilow)iw+(baselow2014/A[1,1],A[2,1],A[1,2],A[2,2],A[1,3],A[2,A[1,1],A[1,2],A[1,3],A[2,1],A[2,2],A[2,base+((i1low1)n2+(i2low2))(其中n2high2low21)((i1n2i2w+(base((low1n2)+low2)A[i1i2ik]((…((i1n2+i2)n3+i3)…)nk+ik)+base((…((low1n2+low2)n3+low3)…)nklowk)數(shù)組的向量(dove元中,稱為“向量”.對(duì)于靜態(tài)數(shù)組, 例:對(duì)于靜態(tài)數(shù)組說明A[l1:u1,l2:u2,…,ln:un],可以在符
li:第i維的下ui:第i維的上界type:數(shù)組元素的類型 n:數(shù)組維數(shù)C隨后解例:對(duì)于靜態(tài)數(shù)組A[l1:u1,l2:u2,…,ln:un],若數(shù)組布局采用行優(yōu)先的連續(xù)布局,數(shù)組首元素的地址為a,則數(shù)組元素A[i1,i2,…,in]的地址D可以如下計(jì)算:D=a+(i1-l1)(u2-l2)(u3-l3)…(un-+…+(in-1-ln-1)(un-ln)+(in-重新整理后得:DaCVC=(…(l1(u2-l2)+l2)(u3-l3)+l3)(u4-l4)+…+ln-1)(un-ln)+V=(…((i1(u2-l2)+i2)(u3-l3)+i3)(u4-l4)+……+in-1)(un-ln)+(這里的C即為前頁向量中的類型轉(zhuǎn)x:=y+it1:=iintt2:=inttorealt1t3:=yreal+t2x:=EE1+E.place:=ifE1.type=integerandE2.type=integerthenE.type=integerelseifE1.type=integerandE2.type=realthenu:=emit(u,‘:=’,‘inttoreal’,emit(E.place,‘:=’,u,‘real+’,E.type:=..20142014/布爾表達(dá)式的語法制導(dǎo)翻例如:可以用數(shù)值“1”表示true用數(shù)值“0”表示優(yōu)點(diǎn):方便實(shí)現(xiàn)控制流語句中E1or ifE1thentrueel
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年特色小鎮(zhèn)開發(fā)建設(shè)合作合同
- 職業(yè)衛(wèi)生課程設(shè)計(jì)崔曉紅
- 統(tǒng)計(jì)學(xué)課程設(shè)計(jì)作業(yè)
- 化工安全生產(chǎn)管理制度
- 自動(dòng)循環(huán)配料課程設(shè)計(jì)
- 照明課程設(shè)計(jì)日志模板
- 中國(guó)石化集團(tuán)公司安全生產(chǎn)監(jiān)督管理制度
- 電骰子 課程設(shè)計(jì)
- 碩士課程設(shè)計(jì)論文格式
- 自動(dòng)大門plc組態(tài)課程設(shè)計(jì)
- 2023年二輪復(fù)習(xí)解答題專題十七:二次函數(shù)的應(yīng)用(銷售利潤(rùn)問題)(原卷版+解析)
- 《ISO56001-2024創(chuàng)新管理體系 - 要求》之26:“9績(jī)效評(píng)價(jià)-9.3管理評(píng)審”解讀和應(yīng)用指導(dǎo)材料(雷澤佳編制-2024)
- 2024至2030年中國(guó)除草劑行業(yè)市場(chǎng)前景預(yù)測(cè)及未來發(fā)展趨勢(shì)研究報(bào)告
- 三年級(jí)上冊(cè)乘法豎式計(jì)算練習(xí)200道及答案
- 2024-2030年中國(guó)泥炭市場(chǎng)深度調(diào)查研究報(bào)告
- 組建學(xué)?;@球隊(duì)方案
- 政務(wù)服務(wù)中心物業(yè)服務(wù)投標(biāo)方案【新版】(技術(shù)方案)
- (正式版)YS∕T 5040-2024 有色金屬礦山工程項(xiàng)目可行性研究報(bào)告編制標(biāo)準(zhǔn)
- HJ 179-2018 石灰石石灰-石膏濕法煙氣脫硫工程技術(shù)規(guī)范
- JT-T-617.7-2018危險(xiǎn)貨物道路運(yùn)輸規(guī)則第7部分:運(yùn)輸條件及作業(yè)要求
- 消弧產(chǎn)品規(guī)格標(biāo)準(zhǔn)化規(guī)定
評(píng)論
0/150
提交評(píng)論