版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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ù)寫(xiě)規(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的值就一定可以通過(guò)次棧2014/SaA{C.i:=f(A.s)}這里,繼承C.i不是通過(guò)復(fù)寫(xiě)規(guī)則來(lái)求值,而是通過(guò)普通函數(shù)f(A.s)調(diào)用來(lái)計(jì)算.在計(jì)算C.i時(shí),A.s在語(yǔ)義棧上,但f(A.s)并未同樣,一種做法是引入新的非終結(jié)符M,將以上翻譯方案SaA{M.i:=A.s}M{C.i:=M.s}Mε{M.s:=這樣,就解決了上述注:從翻譯方案中去掉嵌在產(chǎn)生式中間的語(yǔ)義規(guī)則集時(shí),若語(yǔ)義
2014/ 2014/ 2014/靜態(tài)語(yǔ)義分析的主要工類型檢查(type控制流檢查(flow-of-control控制流語(yǔ)句必須使控制轉(zhuǎn)移到合法的地方(如唯一性檢查(uniquenesschecks)很多場(chǎng)合要求對(duì)名字相關(guān)檢查(name-related(如,一些名字可能被要求配對(duì)出現(xiàn) 2014/語(yǔ)義處理的環(huán)符號(hào)表(symbol類型檢查 生器記號(hào) 語(yǔ)法 語(yǔ)法 表生器 2014/Chapter 2014/符號(hào)表的作符號(hào)表的常見(jiàn)屬關(guān)于符號(hào)表的操符號(hào)表的實(shí)2014/符號(hào)表的作 符號(hào)表的常見(jiàn)屬 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ì)過(guò)程實(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)行 按照棧的方式來(lái)管從數(shù)據(jù)段的堆空間分配和釋放數(shù)據(jù)對(duì)象的靜 分如匯編語(yǔ)言,F(xiàn)ORTRAN語(yǔ)可靜態(tài)分配的數(shù)據(jù)對(duì)象如大小固定且在程序執(zhí)行期間可全程的全局變量,以及程序中的常量,cstans)如C語(yǔ)言中的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)前過(guò)程的活動(dòng)記錄在運(yùn)行棧上的起始位置(址)當(dāng)前激活過(guò)程的層次為(主程序的層次設(shè)為),則對(duì)應(yīng)的spy表含有K+1個(gè)單元,依次存放著現(xiàn)行層,直接外層直至最外層的每一過(guò)程的動(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表的(過(guò)程被調(diào)用和返回時(shí)的保存和恢復(fù) 的方法是把整個(gè)Display表存入活動(dòng)記錄若過(guò)程為第n層,則需要保存D[0]~D[n])一個(gè)過(guò)程被調(diào)用時(shí),從調(diào)用過(guò)程的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) 器–用語(yǔ)法制導(dǎo)定義和翻譯方案的方法來(lái)2014/中間代中間代碼的形 syntaxtree,抽象語(yǔ)法樹(shù)DAG(DirectedAcyclicGraph,有向無(wú)圈圖TAC(Three-addresscode,三地址碼,四元式P-code(特別用于Pascal語(yǔ)言實(shí)現(xiàn) 2014/三地址碼順序的語(yǔ)句序列其語(yǔ)句一般具有如下x:=yop(op為操作碼,y和z為操作符,x為結(jié)果 xyz翻譯成的三地址語(yǔ)句序列是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/ 過(guò)程中說(shuō)明語(yǔ)句的語(yǔ)法制導(dǎo)翻id的詞法名字(符號(hào)表中的名字T.typeT.width數(shù)據(jù)寬度(字節(jié)數(shù)offset:相對(duì)于過(guò)程數(shù)據(jù)區(qū)基址的下一個(gè)可用的相enter(,T.type,offset): typeT.type,20142014/過(guò)程中說(shuō)明語(yǔ)句的語(yǔ)法制導(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/賦值語(yǔ)句的語(yǔ)法制導(dǎo)翻id的詞法名字(符號(hào)表中的名字E.place用來(lái)存放EE.code:E求值的TAC的項(xiàng),返回存放相應(yīng)值的指針,若無(wú)該項(xiàng),則返回genTACnewtempt 2014/產(chǎn)生 語(yǔ)義規(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ù)組說(shuō)明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即為前頁(yè)向量中的類型轉(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á)式的語(yǔ)法制導(dǎo)翻例如:可以用數(shù)值“1”表示true用數(shù)值“0”表示優(yōu)點(diǎn):方便實(shí)現(xiàn)控制流語(yǔ)句中E1or ifE1thentrueel
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- Tectoridin-Standard-生命科學(xué)試劑-MCE
- Symplostatin-1-生命科學(xué)試劑-MCE
- Strictamine-生命科學(xué)試劑-MCE
- 玉溪師范學(xué)院《黑白木刻》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024建筑項(xiàng)目經(jīng)理聘用合同范本聘用合同范本
- 鹽城師范學(xué)院《運(yùn)動(dòng)解剖學(xué)》2021-2022學(xué)年第一學(xué)期期末試卷
- 鹽城師范學(xué)院《信號(hào)與系統(tǒng)實(shí)驗(yàn)》2021-2022學(xué)年第一學(xué)期期末試卷
- 鹽城師范學(xué)院《現(xiàn)代教育技術(shù)》2022-2023學(xué)年第一學(xué)期期末試卷
- 2024裝飾合同協(xié)議大全
- 北京版四年級(jí)上冊(cè)數(shù)學(xué)第一單元 大數(shù)的認(rèn)識(shí) 測(cè)試卷附答案(研優(yōu)卷)
- 《色彩基礎(chǔ)知識(shí)》PPT課件(詳解)
- 魯東教師心理健康期末考試復(fù)習(xí)題及參考答案
- 【教師必備】部編版五年級(jí)語(yǔ)文上冊(cè)第五單元【集體備課】
- 商業(yè)空間設(shè)計(jì)PPT課件
- 相容性獨(dú)立性完全性
- 蘇教版四年級(jí)數(shù)學(xué)上冊(cè)《不含括號(hào)的三步混合運(yùn)算》課件(公開(kāi)課)
- 市政工程創(chuàng)優(yōu)匯報(bào)
- A4橫線稿紙模板(可直接打印)-a4線條紙
- 動(dòng)土作業(yè)許可證(標(biāo)注)
- 球墨鑄鐵鑄造工藝
- 10kV電纜遷移工程施工方案
評(píng)論
0/150
提交評(píng)論