活動記錄

活動記錄,一個過程的一次執行所需信息的管理,是通過使用一個所謂活動記錄的連續存儲塊來實現的。

基本信息

活動記錄

一個過程的一次執行所需信息的管理,是通過使用一個所謂活動記錄的連續存儲塊來實現的。在PASCAL和C語言中,我們通常採用以過程為單位的動態存儲分配方案。即:當一個過程被調用時,就把它的活動記錄推入運行時存儲棧的棧頂,而在控制返回調用程式時,再從棧頂彈出相應的活動記錄。

活動記錄中各種域的作用

如下:

(1) 臨時變數域——用來存放目標程式臨時變數的值,如計算表達式時所產生的結果;

(2) 局部數據域——用來存放過程本次執行中的局部數據、簡單變數以及數組內情向量等;

(3) 機器狀態域——用來保存在調用一個過程之前有關機器狀態的信息,其中包括各種暫存器的當前值和返回地址等;

(4) 任選的存取鏈——為訪問其它活動記錄中所存放的非局部數據提供鏈地址(這在PASCAL語言中是需要用到的);

(5) 任選的控制鏈——用以指向主調過程的活動記錄;

(6) 實在參數——用於存放主調過程為被調用過程所提供的實在參數信息(在活動記錄中,我們列出了實在參數的存放空間,但是為了提高效率,有時參數是通過機器暫存器來傳遞的);

(7) 返回值域——被調用過程用來為主調過程存放返回值的域。

每個活動記錄都可分為定長部分和可變部分。定長部分用來存放那些在編譯時就能確定其體積的量,如簡單變數、常界數組等;可變部分用來存放只有在運行時,才能確定其體積的量,如可變數組、動態指針等。雖然只有在運行時,才能為這些可變體積的數據在活動記錄的可變部分分配其存儲空間,但在編譯時卻能產生通過活動記錄的首地址(一般用一個指示器指示)來訪問它們的目標代碼,這是因為在該活動記錄的定長部分,已設定了存放確定其體積的有關信息的域(如數組的內情向量),而這些域在活動記錄中的相對位置是恆定的。

相關詞條

相關搜尋

熱門詞條

聯絡我們