2014-01-09 110 views
0

我在讀「Java虛擬機規範第7版」,也有一些是百思不得其解,這裏是問題:java虛擬機規範

(§2.6)在這種情況下,使用當前幀恢復調用者的狀態,包括其局部變量和操作數堆棧,調用者的程序計數器適當增加以跳過方法調用指令。然後執行通常在調用方法的框架中繼續,並將返回的值(如果有的話)壓入該框架的操作數堆棧中。

那麼「跳過方法調用指令」是什麼意思?有人可以解釋嗎?非常感謝!

回答

0

完成一個方法後,它必須返回調用者。在調用方法的代碼中,繼續執行程序的位置是,通過方法調用指令

0

假設程序正在執行調用function_B的function_A。在調用function_B之前,必須保存function_A的局部變量的狀態,並將其推送到堆棧。在這裏,我們將程序計數器保存在function_B的調用之​​後,這樣我們就可以知道從執行返回的函數_B之後要繼續哪裏。然後,將函數_B的參數推送到堆棧並調用函數_B。當function_B從執行中返回時,函數_A的局部變量將從堆棧和程序計數器中恢復,該函數在調用function_B之後立即指向下一條指令。