java之JVM指令系统是什么?

经过对java的一段时间学习,相信大家已经能够明确jvm的重要性,那么对于其中的指令系统,可能还不是很了解。从字面意思上来看,是一种调用指令的工具。关于一些具体的内容介绍,我们会在下文中为大家展现,并为jvm的寄存器为大家进行分享,一起进入今天的学习吧。

1、指令系统说明

JVM指令系统与其它计算机指令系统极为相似。同时,Java指令还包括操作码和操作数两部分。操作码是一个8位的二进制数字,操作码后面有一个操作数,其长度视需要而定。运算代码用来指定指令操作的性质(这里我们以汇编符号的形式来说明),例如iload表示从存储器中装入一个整数,anewarray表示为新的数组分配空间,iand表示两个整数的"与",ret表示过程控制,从对某个方法的调用中返回。超过8位长度时,操作数被划分为多个字节存储。对于这种情况,JVM采用了“bigendian”的编码方法,即高bits位于低字节中。这种情况与Motorola和RISCCPU所采用的编码方式相同,而与Intel所采用的"littleendian"编码方式不同,即低位bits存储低位字节。

java指令系统是为实现Java语言而设计的,它包含了调用方法的指令,以及监控多优先级系统。JVM中8位操作码的长度使得JVM最多有256条指令,而现在已经有超过160条指令被使用。

2、常用寄存器

全部CPU都包含一个寄存器组,用来保存系统状态和处理器要求的信息。当虚拟机定义了更多的寄存器时,在不访问栈或内存的情况下就能从中获得更多的信息,这有助于提高运行速度。但是,如果虚拟机中寄存器的数量超过实际CPU的数量,那么在实现虚拟机时将花费大量的处理器时间用常规存储器模拟寄存器,而这反而会降低虚拟机的效率。对于这一点,JVM只设置了4个最常用的寄存器。他们是:

(1)pc程序计数器

(2)optop操作数栈顶指针

(3)frame当前执行环境指针

(4)vars指向当前执行环境中第一个局部变量的指针

所有寄存器均为32位。pc用于记录程序的执行。optop,frame和vars用于记录指向Java栈区的指针。

原文来自:https://www.py.cn
© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容