我正在阅读“java虚拟机规范版7”,有些东西真的让我感到困惑,这里有一个问题:
在这种情况下使用当前帧(第2.6节)来恢复调用者的状态,包括其局部变量和操作数堆栈,调用者的程序计数器适当增加以跳过方法调用指令即可。然后执行在调用方法的帧中正常继续,返回值(如果有)被推送到该帧的操作数堆栈。
那么“跳过方法调用指令”是什么意思?有人可以解释一下吗?非常感谢你!
答案 0 :(得分:0)
方法完成后,必须返回调用者。继续执行程序的位置是超过调用方法代码中的方法调用指令。
答案 1 :(得分:0)
假设程序正在执行调用function_B的function_A。在调用function_B之前,必须保存function_A的局部变量状态,并将其推送到堆栈。这里我们将程序计数器保存到function_B的调用之后,这样我们就可以知道function_B在执行后返回的位置。然后,将function_B的参数推送到堆栈并调用function_B。当function_B从执行返回时,函数_A的局部变量从堆栈中恢复,程序计数器在调用function_B之后立即指向下一条指令。