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