
運(yùn)行時(shí)存儲空間組織與管理是一個(gè)復(fù)雜而十分重要的問題,首先要了解一個(gè)過程(procedure)靜態(tài)源程序和它的目標(biāo)程序在運(yùn)行時(shí)的活動之間的關(guān)系。一個(gè)過程的活動指的是該過程的一次執(zhí)行。為了管理過程在一次執(zhí)行中所需要的信息.使用一個(gè)連續(xù)的存儲塊,我們把這樣的一個(gè)連續(xù)存儲塊稱為活動記錄?;顒佑涗浿杏涗浥R時(shí)單元、內(nèi)情向量、局部變量、形式單元、靜態(tài)鏈、動態(tài)鏈和返回地址。
存儲分田策略有三種:靜態(tài)分配、棧式動態(tài)分配和堆式動態(tài)分配。棧(stack)是一個(gè)特定的存儲區(qū),它的一端是固定的,另端是浮動的.對這個(gè)存儲區(qū).所有的信息存入也稱為堆陣式堆棧。棧的概念在編譯技術(shù)和其他軟件技術(shù)中被廣泛應(yīng)用。堆(heap)是一個(gè)特定的存儲區(qū).其分配使用方法是先把它成若干個(gè)長度可變的子存儲區(qū),有些用干存入數(shù)據(jù).有些供自由使用.當(dāng)創(chuàng)建一片數(shù)據(jù)時(shí).便需從自由公用區(qū)中選出一個(gè)足夠大自由區(qū),把該數(shù)據(jù)存人。當(dāng)該數(shù)據(jù)不再箭用時(shí),便釋放相應(yīng)的存區(qū).這佯的存儲分配方式稱為堆式分配。堆式分配適用干理序運(yùn)中長度可變的數(shù)據(jù).如USP語育中的表等.
代瑪生成時(shí),帝首先考慮奸相應(yīng)干每個(gè)鐐程序或中間捏序的句的目標(biāo)程序結(jié)構(gòu),然后一對多地轉(zhuǎn)換過去。其中還可能有些地事先不知道,可先待定,記下位置,拉上蛙,以后知淚了再回綴。為7生成更有效的目標(biāo)代瑪.還有一個(gè)要重點(diǎn)考慮的問題是女何更有效地利用寄存器。另外.地址計(jì)算、數(shù)組引用等也都有不同,就不在此逐一敘述。