PC寄存器中保存Java字节码的指令地址。
1 .返回地址的作用
方法a调用方法b时,PC寄存器相应地移动到b方法。 b执行后,要返回a继续执行,需要a执行的指令的地址。 因此,在b的堆栈帧中,保存a的当时的指令地址(当时的PC寄存器的值),在执行了b之后,基于该返回地址跳回a。
如果没有PC寄存器,执行元件也按照指令的顺序一个个正常执行。 PC寄存器的作用是线程的私有,因为多线程切换时,可以找到每个线程执行的位置。
执行Native方法时,PC寄存器中存储了Undefined,但是如果发生线程切换,该如何返回呢?
Java线程总是以某种形式映射到操作系统线程。 HotSpot VM虚拟机的映射模型为1:1。 执行native方法时,它将接管本机CPU上的相应线程。 此时,如果线程切换为本机CPU的PC寄存器管理,则保证native方法的执行完成。
native方法执行完成后,它会弹出堆栈(堆栈帧pop ),然后返回调用的位置继续运行程序。 如问题1所示,没有PC寄存器也可以按以下顺序执行。
译文: 3359 www.cn blogs.com/tommaoxiaoqi/p/13051041.html