程序计数寄存器
Posted strandtrack
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了程序计数寄存器相关的知识,希望对你有一定的参考价值。
作用:
PC寄存器用来存储指向下一条指令的地址,也即将要执行的指令代码。由执行引擎读取下一条指令。
简介:
他是一块很小的内存空间,几乎可以忽略不计。也是运行速度最快的存储区域,每个线程都有自己的程序计数寄存器,是线程私有的。
举例:
举例之前,先明确一个概念:
就是反编译之后,可以看到0:iconst_3这样的,0就是指令地址,iconst_3就是操作指令。
现在开始正式举例:
假设有三个线程ABC,切换线程时,A线程执行到第五步,也就是上面说的指令地址5,这时候切换到B了,那再切换回来怎么办呢?A线程的程序计数寄存器就存了5,等切换回A线程的时候就从第五步开始执行,这就是程序计数寄存器的作用。
这也是为什么程序计数寄存器为什么说是线程私有的原因,因为如果是共有的,共享的,那么我从A线程切换到B线程的时候,程序计数寄存器存的是5,这时候我B线程执行到第3步再切换到C线程,程序计数寄存器存的就是3了,这时候如果我还是回到A线程的话,那么就是执行的第三步了,但我要执行的是第五步,所以必须保证线程私有。
面试题:
使用PC寄存器存储字节码指令地址有什么用呢?
答:因为CPU需要不停的切换各个线程,这时候切换回来之后,就得知道接着要从那开始执行。
JVM的字节码解释器就需要通过改变PC寄存器的值来明确下一条应该执行什么样的字节码指令。
以上是关于程序计数寄存器的主要内容,如果未能解决你的问题,请参考以下文章