JVM程序计数器到底存储的是当前执行的指令地址,还是下一条指令的地址

news2024/9/24 13:13:56

JVM程序计数器到底存储的是当前执行的指令地址,还是下一条指令的地址?

说法一:chatgpt

程序计数器(Program Counter,PC) 存储的是下一条指令的地址。在CPU执行指令时,程序计数器始终跟踪着当前已经执行的指令地址,并将下一条需要执行的指令的地址存储在该寄存器中。当CPU执行完当前指令后,程序计数器会自动加1或者跳转到其他指令的地址,以指向下一条指令的地址。因此,程序计数器在计算机中起着重要的作用,它为CPU提供了指令序列执行的基础。

特别说明了不是当前执行的,而是下一条

说法二:百度文心一言

程序计数器存储的是当前CPU指令的地址,也就是 当前正在执行的指令的地址

说法三:

程序计数器存储的是程序当前执行的指令的地址( 也可以说保存下一条指令的所在存储单元的地址)

那到底什么才是对的呢?

我们来看看官方的说明:

https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.5.1

可以看到官网的意思是说,当时“currently being executed”也就是当前正在执行的指令。

分析一下具体的步骤:

1、程序计数器初始化:在程序开始运行之前,程序计数器会被初始化为指向第一条要执行的指令的地址。比如现在是10000;
2、指令执行:CPU从内存中取出程序计数器中存储的指令地址所对应的指令,并执行该指令。在执行完当前指令后,程序计数器会自动加1或者跳转到其他指令的地址,以指向下一条要执行的指令的地址。比如现在是10001;
3、指令跳转:当程序需要进行分支、循环或者函数调用等操作时,程序计数器会被更新为新的指令地址,以便CPU能够跳转到新的位置继续执行程序。这种跳转可以是条件性的或者无条件的,可以通过各种方式实现,例如条件语句、循环语句、函数调用等。
4、中断处理:当计算机遇到硬件故障、系统错误或者其他中断事件时,程序计数器也可能会被更新为中断服务例程的入口地址,以便CPU能够立即跳转到中断处理程序中执行相应的操作。

其实,为什么大家会有分歧我想主要还是可以从步骤中看出,在取和执行过程中还是当前指令的地址,在执行完成到一下次取之前存储的就是下一条指令的地址。所以几种说法都可以解决的通,你们觉得呢?个人还是建议使用官方的说法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/430906.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【机器人仿真Webots教程】-Webots安装

Webots安装 文章目录Webots安装1. Webots简介2. Webots安装2.1 系统要求2.2 验证显卡驱动2.3 安装3. Webots仿真3.1 world文件3.2 Controller文件3.3 Supervisor Controller4. 启动方式1. Webots简介 webots是一个开源3D移动机器人仿真框架。其为Cyberbotics公司旗下研发开源框…

Fastjson反序列化漏洞复现(实战案例)

本文转载于:https://blog.csdn.net/jinzezhi/article/details/124274123 漏洞介绍 FastJson在解析json的过程中,支持使用autoType来实例化某一个具体的类,并调用该类的set/get方法来访问属性。通过查找代码中相关的方法,即可构造出…

【Python_Opencv图像处理框架】图像基本操作+90bb5729-b33a-4e82-a0d9-faa3e5cbf621

写在前面 很幸运能选择Python语言进行学习,这是有关Opencv的图像处理的第一篇文章,讲解了有关图像处理的一些基础操作,作为初学者,我尽己所能,但仍会存在疏漏的地方,希望各位看官不吝指正❤️ 写在中间 1…

unity物体运动经过特定点并绘出轨迹

经过线如果有圆滑可以参考 Unity物体运动时画出轨迹_天人合一peng的博客-CSDN博客 并修改里面的数值轨迹会有变化 float angle Mathf.Min(1, Vector3.Distance(this.transform.position, targetPos) / distanceToTarget) * 45; this.transform.rotation this.t…

App灰度发布实现路径之小程序容器

灰度从字面意思理解就是存在于黑与白之间的一个平滑过渡的区域,所以说对于互联网产品来说,上线和未上线就是黑与白之分,而实现未上线功能平稳过渡的一种方式就叫做灰度发布。 灰度发布将新版本应用程序推送给一部分用户进行测试和反馈的过程…

7、ThingsBoard使用docker compose集群部署

1、概述 今天我将讲解官方文档说的使用docker compose集群部署ThingsBoard,这种部署方式也是目前企业中常用的形式,希望大家能够掌握,我不是直接使用官方的镜像,我是自己拉起代码,然后自己构建镜像,在传到服务器上,使用自己的镜像来部署。而且这种部署中间有个大坑,我…

【大数据Hadoop】HDFS3.3.1-Namenode-缓存管理

缓存管理前言缓存概念HDFS 集中式缓存有两个主要概念。缓存管理命令HDFS 集中式缓存架构CacheManager 类实现CacheReplicationMonitor前言 Hadoop 2.3.0 版本新增了集中式缓存管理(Centralized Cache Management)功能,允许用户将一些文件和目…

数字滤波器设计——FIR 滤波器

数字滤波器设计实践介绍 此示例说明如何使用 Signal Processing Toolbox 产品中的 designfilt 函数,根据频率响应设定设计 FIR 和 IIR 滤波器。该示例重点讲述低通滤波器,但大多数结果也适用于其他响应类型。 此示例主要介绍数字滤波器的设计&#xff…

MATLAB | 如何用MATLAB如何绘制各式各样精致的三元相图(ternary plot)

整了个大活,写了一个能够生成非常精致三元相图的函数,这种图主要用于展示三种变量之间的比例,本期实验绘制效果如下: 编写不易,这个工具写的脑壳痛,求多多点赞,依旧先介绍咋使用,工具…

嵌入式软件架构

总目录链接>> AutoSAR入门和实战系列总目录 总目录链接>> AutoSAR BSW高阶配置系列总目录 文章目录1 嵌入式软件分类 – BAREMETAL2 嵌入式软件分类 – 实时操作系统 (RTOS)3 嵌入式软件分类 – “通用”操作系统4 嵌入式软件分类 – 容器/微服务微服务容器5 嵌…

入行 4 年,跳槽 2 次,我摸透了软件测试这一行

最近几年行业在如火如荼的发展壮大,以及其他传统公司都需要大批量的软件测试人员,但是20年的疫情导致大规模裁员,让人觉得行业寒冬已来,软件测试人员的职业规划值得我们深度思考。 大家都比较看好软件测试行业,只是因为…

python入门(四)python眼里的图像

文章目录背景一.搭建jupyter环境Jupyter 是什么:安装Jupyter Lab1: cmd中找到 anaconda powershell prompt2.切换到python3.8环境中3. 安装Jupyter4. 运行jupyter-lab5. 备注6.命令练习二.图像的本质背景 本人工作中,用到了ai相关技术,但是java出身&…

CNStack 云服务云组件:打造丰富的云原生技术中台生态

作者:刘裕惺 CNStack 相关阅读: CNStack 多集群服务:基于OCM 打造完善的集群管理能力 CNStack 虚拟化服务:实现虚拟机和容器资源的共池管理 CNStack 云边协同平台:实现原生边缘竟能如此简单 01 前言 CNStack 2.0…

Linux网络IO精华指南

在互联网中提起网络,我们都会避免不了讨论高并发、百万连接。而此处的百万连接的实现,脱离不了网络 IO 的选择,因此本文作为一篇个人学习的笔记,特此进行记录一下整个网络 IO 的发展演变过程。以及目前广泛使用的网络模型。 1.网…

小说情感倾向分析工具

目前有很多中英文小说情感倾向工具,以下是一些常用的工具: 情感分析工具:可以对文本进行情感识别,根据文本中包含的情感信息,将其转化成情感值,通常有积极情感值、消极情感值、中性情感值等,常…

Vue3.0的生命周期

要说清这个生命周期钩子,首先我们要通过一个实例来讲解 就是点击这个按钮来切换Demo组件的显示隐藏,当然它也疯狂的操作Demo的挂载,卸载 红色是卸载流程,蓝色是挂载流程 我们写在外面可以实现,但是v3的思想是组合api因…

树状数组与线段树的应用

一、树状数组 树状数组给人的感觉就像,一直在维护前缀和一样,只是加快了前缀和的速度,再用前缀和结合题目得出一些性质,从而去解题。(一些不成熟的看法) 基础知识(一般树状数组用来处理单点修…

含氢微网优化调度模型matlab

目录 1 主要内容 模型示意图 目标函数 2 部分程序 3 程序结果 4 下载链接 1 主要内容 最近咨询含氢微网优化调度模型的同学较多,本次就分享一个高质量的源码资源。该程序方法复现《Simulation of design and operation of hydrogen energy utilization syste…

ssm拦截器

ssm拦截器 #: 与之前的过滤器不一样,过滤器是指在servlet中的,而拦截器是属于SpringMVC的,可以对请求的数据进行提前操作和后置操作: 先自己创建一个拦截器Interception类(其实人家真名叫Interceptor&…

flutter dart中用ffi调用golang或C的动态链接库

本文介绍从dart中,通过ffi方式调用golang生成的动态链接库。 go/lib.go package mainimport "C"//export GetKey func GetKey() *C.char {theKey : "123-456-789"return C.CString(theKey) }func main() {}cd go go build -buildmodec-shared…