【正文】
/*statement*/ {int x。 ? 分程序,棧式, pl/0 符號表變量地址 Proc (parameters)。 | public virtual void draw() }。 申請 m個空間 , 令首地址為 a。 while k=n do begin di:=uili+ 1。 b(f) end {c}。 ? (5) var m:integer。 b(f) end {c} begin c end. ? (1)program param(input,output)。 (*) var m:integer。 (*) var m:integer。 (9) printf(“ a is now %d,b is now %d\n” ,a,b)。 *x=*y。 x:=y; y:=temp end; 調用 swap(i,a[i]) 其結果等價于執(zhí)行下列運算: 1把 I和 a[i]的地址分別放到 x和 y相應的單元 a1,a2 2( temp :=x; )temp的內容置為 a1所指單元中存的內容 3 (x :=y。 x:=y; y:=temp end; 調用 swap(a,b) 過程將不會影響 a和 b的值。 ? ,就像使用局部變量一樣使用這些形式單元。 例如:過程 swap(x,y:integer)。 (13) writeln(‘ a=‘ ,a)。 (8) y:=temp (9) end。 (3)procedure swap({var} x,y:integer)。 a[i]:=a[j]。 參數(shù)傳遞 (1)procedure exchangel(i,j:integer)。 變 量 e B5 的 T O P 數(shù) 組 C 的 內 情 向 量 變 量 e 和 d B4 的 T O P B2的 T O P 數(shù) 組 B 的 內 情 向 量 變 量 zK B1 的 T O PD D I S P L A Y6 形 式 單 元 m ,n5 參 數(shù) 個 數(shù): 24 調 用 時 的 棧 頂 地 址 (老 T O P )3 全 局 D I S P L A Y 地 址2 返 回 地 址1 老 S P0 過 程 的 T O P ,指 向 活 動 記 錄 之 頂 B 的 內 情 向 量 Z B1的 T O PD I S P L A Y D I S P L A Y 形式單元 m , n 2 形式單元 m , n 2連 接 數(shù) 據(jù) 連 接 數(shù) 據(jù) A 的 T O P A 的 T O P ∶ ∶ ∶ ∶( a ) ( b)( a ) 到 達 標 號 B1處 。 3. 參數(shù)個數(shù)和形式單元 4. DISPAY表。 每個過程被當作是 0層分程序。第一,對每個過程或分程序都建立有自己的棧頂指示器 TOP,代替原來僅有過程的棧頂指示器 , 每個 TOP的值保存在各自活動記錄中。 按照過程處理辦法,意味著必須一層一層地通過“返回” 來恢復所要到達的那個分程序的數(shù)據(jù)區(qū),但不能直接到達。因此,可以把處理過程的存儲辦法應用到處理分程序中。 L6: 5 4 end。 B2:begin real d, e。 ?全局 DISPLAY地址 Procedure A(m,n)。 ?? P Q call R R( x , y)。 例:prog ram m ain (i, 0)。 ? 關鍵技術:解決對非局部量的引用(存?。?。 ? 例 : main ? 全局變量的說明 ? proc R ? …… ? end R。一個過程的一次執(zhí)行所需要的信息使用一個連續(xù)的存儲區(qū)來管理,這個區(qū) (塊)叫做一個活動記錄或 fr am e ( 幀 )一般這個段要記錄:? 臨時值,如計算表達式時的中間工作單元。 ? end。 ? array B[m:n]。 ? 動態(tài):如果名字的性質只有在程序運行時才能知道,則稱這種性質為“動態(tài)”確定的。(11 ) sho w。(8) begin(9) r := 。(5) procedru e sma ll。第十章 目標程序 運行時的 存儲組織