我正在读"java虚拟机规范第7版“,有件事让我很困惑,下面是一个问题:
在本例中,使用当前帧(§2.6)恢复调用程序的状态,包括其局部变量和操作数堆栈,调用方的程序计数器适当地增加以跳过方法调用指令。然后,在调用方法的框架中,将返回的值(如果有的话)推送到该框架的操作数堆栈中,执行将继续正常进行。
那么“跳过方法调用指令”是什么意思呢?有人能解释吗?非常感谢!
发布于 2014-01-09 08:50:36
在完成一个方法之后,它必须返回到调用方。继续执行程序的位置超过了调用方法的代码中调用指令的方法。
发布于 2014-01-09 08:50:50
假设程序正在执行调用function_A的function_B,在调用function_B之前,必须保存function_A的局部变量状态,然后将其推送到堆栈中。在这里,我们在调用function_B之后保存程序计数器,以便在执行function_B返回后知道在哪里继续。然后,将function_B的参数推送到堆栈中,并调用function_B。当function_B从执行中返回时,function_A的局部变量将从堆栈和指向调用function_B后的下一条指令的程序计数器中恢复。
https://stackoverflow.com/questions/21015324
复制相似问题