freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

課件編譯原理編譯原理課件屬性文法語法制導(dǎo)2005課件說明第八章(文件)

2025-05-31 23:08 上一頁面

下一頁面
 

【正文】 行編號(hào)的。 ,共四項(xiàng): ( 1)老 SP值; ( 2)返回地址; (3)全局 DISPAY地址; ( 4)調(diào)用時(shí)的棧頂單元地址,老 TOP。當(dāng)進(jìn)入分程序時(shí)它含現(xiàn)行棧頂?shù)刂?,以后,用來定義棧的新高度(分程序的 TOP值); ( 2)分程序的局部變量, 數(shù)組內(nèi)情向量和臨時(shí)工作單元。 (2) var x:integer。 a[j]:=x (5) end。 (4) var temp:integer。 (10)begin (11) a:=1。writeln(?b=?,b) (14)end. 帶有過程 swap的 PASCAL程序 ? 傳地址(變量參數(shù)) 例如:過程 swap(var x,y:integer)。 swap(a,b); 其結(jié)果: a,b調(diào)用前的值不改變。 procedure swap( x,y:integer)。 其結(jié)果等價(jià)于執(zhí)行下列運(yùn)算: x :=a; y :=b; temp :=x; x :=y; y :=temp 傳地址 的實(shí)現(xiàn) ( call by reference )(callbyaddress)(callbylocation) 把實(shí)在參數(shù)的地址傳遞給相應(yīng)的形參,即 調(diào)用過程把一個(gè)指向?qū)崊⒌拇鎯?chǔ)地址的指針傳遞給被調(diào)用過程相應(yīng)的形參: 1實(shí)在參數(shù)是一個(gè)名字,或具有左值的表達(dá)式 傳遞左值 2實(shí)在參數(shù)是無左值的表達(dá)式 計(jì)算值,放入一存儲(chǔ)單元,傳此存儲(chǔ)單元地址 3目標(biāo)代碼中,被調(diào)用過程對(duì)形參的引用變成對(duì)傳遞給被調(diào)用過程的指針的間接引用 procedure swap( x,y:integer)。) a1所指單元 的內(nèi)容置為 a2所指單元值 4( y :=temp) a2所指單元 的內(nèi)容置為 temp的 值 (1)swap(x,y) (2)int *x,*y。 *y=temp。b)。 ? (2)procedure b(function h(n:integer):integer)。 ? (6) function f(n:integer):integr。 ? (9)begin ? (10) c ? (11)end 嵌套過程作為參數(shù)傳遞 p a r a m c 存取鏈 m b f . 存取鏈 連同存取鏈一起 傳遞過程實(shí)參 堆式動(dòng)態(tài)存儲(chǔ)分配 ? 需求: – 一個(gè)程序語言允許用戶自由地申請(qǐng)數(shù)據(jù)空間和退還數(shù)據(jù)空間,或者不僅有過程而且有進(jìn)程( process)的程序結(jié)構(gòu), ? 操作: – 堆提供兩個(gè)操作,分配操作和釋放操作 ? 情況 : – 經(jīng)一段運(yùn)行時(shí)間之后,這個(gè)大空間就必定被分劃成許多塊塊,有些占用,有些無用(空閑) 碎片問題 程序語言允許用戶自由地申請(qǐng)數(shù)據(jù)空間和退還數(shù)據(jù)空間 ? C++語言中 new操作符施加在一個(gè)類型標(biāo)識(shí)符上 ( 包括類名 ) ? Pascal語言中 , 標(biāo)準(zhǔn)過程 new能夠動(dòng)態(tài)建立存儲(chǔ)空間并相應(yīng)地置上指針 。 Smalltalk與 LISP相似是完全堆式環(huán)境 C++則保持 C的基于棧的環(huán)境 實(shí)現(xiàn)對(duì)象 實(shí)現(xiàn)對(duì)象的一個(gè)簡(jiǎn)單機(jī)制是,初始化代碼將所有當(dāng)前的繼承特征(屬性和方法)直接地復(fù)制到記錄結(jié)構(gòu)中(將方法當(dāng)作代碼指針)。此時(shí),只記錄一次方法指針(在類結(jié)構(gòu)中),而且對(duì)于每個(gè)對(duì)象并不將其復(fù)制到存儲(chǔ)器中。 折衷方法 將整個(gè)類結(jié)構(gòu)保存在存儲(chǔ)中 , 計(jì)算出每個(gè)類的可用方法的代碼指針列表 (稱為方法索引表 , 如 :C++的 virtual function table) 。 void f1(){…} } class B extends A {void f2(){…} } class C entends B {void f2(){…} } class D extends C{bool m2。 class D d1,d2。 void init(int p,string s){price=p。 void setcolor(string c){color=c。 (100,apple)。 } 它 的運(yùn)行時(shí)存儲(chǔ)組織 臨時(shí)變量 局部變量 控制鏈 (EBP) 返回地址 (EIP) 實(shí)參 …… Apple的實(shí)例 …… …… Vtable of Fruit Vtable of Apple …… vtable int price(100) string name string color …… …… 棧區(qū) 堆區(qū) 。 day=Tuesday。} } void foo() { class Apple a。} void print(){ Print(On ,day, the price of ,name, is ,price,\n)。 class Fruit { int price。 class B b。 現(xiàn)在每個(gè)對(duì)象不僅包括實(shí)例變量還包括了一個(gè)相應(yīng)的方法索引表的指針而不是類結(jié)構(gòu)的指針 ( 當(dāng)然 , 這個(gè)指針的位置必須也有可預(yù)測(cè)的偏移量 ) 。其缺點(diǎn)在于:雖然實(shí)例變量具有可預(yù)測(cè)的偏移量(正如在標(biāo)準(zhǔn)環(huán)境中的局部變量一樣),方法卻沒有,而且它們必須由帶有查詢功能的符號(hào)表結(jié)構(gòu)中的名字維護(hù)。 另外一種方法是在執(zhí)行時(shí)將類結(jié)構(gòu)的一個(gè)完整的描述保存在每個(gè)類的存儲(chǔ)中,并由超類指針維護(hù)繼承性(有時(shí)這也稱作繼承圖( inheritance graph))。 ? C語言中有這些操作的若干個(gè)版本 , 但最基本的是 malloc和 free, 它們都是標(biāo)準(zhǔn)庫 ( stdlib)的一部分 面向?qū)ο蟮恼Z言的動(dòng)態(tài)存儲(chǔ) 面向?qū)ο蟮恼Z言在運(yùn)行時(shí)環(huán)境中要求特殊的機(jī)制以完成其增添的特性:對(duì)象 、 方法 、繼承以及動(dòng)態(tài)綁定 。 ? (8)begin m := 0。 ? (4)procedure c。 (10)} 在一個(gè)值調(diào)用過程中使用指針的 C程序 在 C程序中無傳地址所以用指針實(shí)現(xiàn)。 (8) swap(amp。 (4) temp=*x。 begin temp:=x。 begin temp:=x。 ? ,并將其放在對(duì)應(yīng)形式單元開辟的空間中。 ? 傳值(值調(diào)用) 特點(diǎn)是對(duì)形式參數(shù)的任何運(yùn)算不影響實(shí)參的值。 (12) swap(a,b)。 (7) x:=y。 (2)var a,b:integer。 (4) x:=a[i]。 B 的 內(nèi) 情 向 量 Z B1的 T O
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1