本文向大家简单介绍一下JVM指令系统 的概念和用法,JVM指令系统是以Java语言的实现为目的设计的,其中包含了用于调用方法和监视多先程系统的指令。
JVM指令系统
JVM指令系统同其他计算机的指令系统极其相似。Java指令也是由操作码和操作数两部分组成。操作码为8位二进制数,操作数进紧随在操作码的后面,其长度根据需要而不同。操作码用于指定一条指令操作的性质(在这里采用汇编符号的形式进行说明),如iload表示从存储器中装入一个整数,anewarray表示为一个新数组分配空间,iand表示两个整数的“与”,ret用于流程控制,表示从对某一方法的调用中返回。当长度大于8位时,操作数被分为两个以上字节存放。
JVM采用了"big endian"的编码方式来处理这种情况,即高位bits存放在低字节中。这同 Motorola及其他的RISC CPU采用的编码方式是一致的,而与Intel采用的“little endian”的编码方式即低位bits存放在低位字节的方法不同。
JVM指令系统是以Java语言的实现为目的设计的,其中包含了用于调用方法和监视多先程系统的指令。Java的8位操作码的长度使得JVM最多有256种指令,已使用了160多种操作码。
所有的CPU均包含用于保存系统状态和处理器所需信息的寄存器组。如果虚拟机定义较多的寄存器,便可以从中得到更多的信息而不必对栈或内存进行访问,这有利于提高运行速度。然而,如果虚拟机中的寄存器比实际CPU的寄存器多,在实现虚拟机时就会占用处理器大量的时间来用常规存储器模拟寄存器,这反而会降低虚拟机的效率。针对这种情况,JVM只设置了4个最为常用的寄存器。它们是:
◆pc程序计数器
◆optop操作数栈顶指针
◆frame当前执行环境指针
vars指向当前执行环境中***个局部变量的指针所有寄存器均为32位。pc用于记录程序的执行。optop,frame和vars用于记录指向Java栈区的指针。
【编辑推荐】
- JVM内存溢出的两大类型及解决方案
- Tomcat配置JVM参数巧妙方法
- JVM基础:解析JVM分代垃圾回收策略
- JVM for Linux JIT诊断技术简介
- 巧解IBM JVM for Linux onPOWER性能调优