阿摩線上測驗 登入

申論題資訊

試卷:94年 - 94-2 專技檢覈_資訊技師:程式語言#38971
科目:程式語言
年份:94年
排序:0

題組內容

八、若實作

申論題內容

⑵遞迴副程式呼叫時,需要下列三者中之何者方能完成? CEP:Current-Environment Pointer CIP:Current-Instruction Pointer DAR:Dynamic Activation Record 試說明其原因。(20 分)

詳解 (共 1 筆)

詳解 提供者:hchungw

在遞迴副程式呼叫時,需要以下三者中的「動態活動紀錄」(DAR:Dynamic Activation Record)來完成。讓我們詳細說明原因。

動態活動紀錄(DAR: Dynamic Activation Record)

動態活動紀錄是用來保存每次副程式呼叫時的執行環境和相關資訊的數據結構。它包括了返回地址、參數、局部變數和其他上下文資訊。在遞迴呼叫中,每次呼叫都會創建一個新的動態活動紀錄,以保存該次呼叫的上下文。這是遞迴呼叫能夠正確返回和維持各層呼叫狀態的關鍵。

原因:

  1. 保存上下文:每次副程式呼叫都需要保存當前的執行環境,包括返回地址、局部變數和參數。這些資訊需要在副程式返回時恢復,以確保程序能夠正確繼續執行。
  2. 遞迴層次管理:遞迴呼叫會導致多層次的副程式活動,每層次都需要獨立的環境。動態活動紀錄允許每次呼叫有自己獨立的活動紀錄,確保每次呼叫的上下文不會相互干擾。
  3. 回溯控制:當副程式執行完成時,動態活動紀錄提供了返回上層呼叫的返回地址,確保程序能夠正確地回溯到呼叫副程式的地方。

當前環境指標(CEP: Current-Environment Pointer)

當前環境指標通常指向當前活動紀錄或環境塊,用於變數查找和上下文管理。在遞迴呼叫中,當前環境指標需要動態更新以指向新創建的動態活動紀錄。

當前指令指標(CIP: Current-Instruction Pointer)

當前指令指標指向正在執行的指令地址。每次副程式呼叫時,當前指令指標需要保存到動態活動紀錄中,以便在副程式返回時恢復。

綜合說明

在遞迴呼叫中,動態活動紀錄是核心,因為它:

  • 保存了副程式的上下文(包括當前環境指標和當前指令指標)。
  • 為每次呼叫提供獨立的執行環境,確保遞迴層次之間互不干擾。
  • 確保副程式返回時能夠正確恢復到上層呼叫的執行環境。

雖然當前環境指標和當前指令指標在遞迴呼叫中也很重要,但它們都是存儲在動態活動紀錄中的。動態活動紀錄的存在是遞迴呼叫能夠正確運作的關鍵,因為它負責管理和保存所有必要的上下文信息。因此,**動態活動紀錄(DAR)**是遞迴副程式呼叫能夠完成的必要條件。