2014-01-09 79 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之后立即指向下一条指令。