首页 > 编程知识 正文

内部寄存器pc(单片机中寄存器的作用)

时间:2023-05-04 20:46:47 阅读:74664 作者:50

PC寄存器介绍

在JVM的程序计数寄存器(Program Counter Register )中,Register的名称来源于CPU的寄存器,寄存器中存储与指令相关的字段信息。 CPU必须将数据加载到寄存器中才能工作。 JVM内的PC寄存器是物理PC寄存器的抽象模拟。

线程支持JVM堆栈。 JVM堆栈包含一组堆栈帧。 当JVM调用Java方法时,它从相应类的类型信息中获取方法的局部变量区域和操作数堆栈的大小,并据此分配堆栈帧内存,将其推入JVM堆栈。

在活动线程中,只有堆栈开头的堆栈帧有效,称为当前堆栈帧,与此堆栈帧关联的方法称为当前方法。

PC寄存器的作用

PC寄存器用于保存下一条指令的地址,即即将执行的指令代码。 执行引擎读取以下命令:

1 .这是一个小得几乎可以忽略的内存空间。 也是动作最快的存储区域

2 .在JVM规范中,每个线程都有自己的程序计数器,是线程的私有,生命周期与线程的生命周期相匹配

3 .任何时候一个线程只运行一种方法,也就是所谓的当前方法。 程序计数器存储当前线程正在执行的java方法的JVM指令地址。 或者,如果实际执行native方法,则没有指定值,因为程序计数器不负责本地方法堆栈。

4 .程序控制流的指示符,分支、循环、跳转、异常处理、线程恢复等基础功能需要依赖于该计数器进行

5 .字节码解释器的作用是更改此计数器的值,然后选择下一个要执行的字节码命令

这是唯一没有在java虚拟机规范中规定内存退出(oom )情况的区域,没有垃圾回收

代码示例

电脑收银机面试常见问题

1 .使用PC寄存器存储字节码指令地址有什么用呢? (为什么要使用PC寄存器记录当前线程的执行地址呢? )

)多线程在宏上并行(多个事件在同一时刻同时发生),但实际上并行交替执行

)2) CPU需要不断切换各个线程,此时切换回来后,需要知道下一步从哪里继续运行

)3) JVM的字节码解释器需要通过改变PC寄存器的值,明确接下来应该执行什么样的字节码命令

因此,在许多线程同时运行的过程中,在某个特定时间点,一个处理器或多核处理器中的一个内核只执行一个线程中的一个指令。 这必然会导致频繁的中断和恢复,如何保证点不错呢? 每个线程创建后生成自己的程序计数器和堆栈帧,程序计数器在每个线程之间互不影响。

2 .为什么电脑寄存器设置为线程专用?

(1)众所周知,多线程是指在某个特定时间段内只执行某个线程的方法。 CPU不停地切换任务。 这样做必然会导致频繁的中断和恢复。 怎么做到毫厘不爽呢?

)2)为了准确地记录每个线程正在执行的当前字节码指令地址,当然最好的办法是为每个线程分配PC寄存器,从而允许线程之间进行独立的计算,并且不会相互干扰

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。