JVM-字节码指令集

131 阅读1分钟

概述

  • Java虚拟机的指令由一个字节长度的代表某种特定操作含义的数字称为操作码(Opcode),以及跟随其后的零至多个代表此操作所需参数 (称为操作数Operands),而构成。 由于Java虚拟机采用面向操作数栈,而不是寄存器的结构,所以大多数的指令都不包含操作数,只有一个操作码。
  • 由于限制了Java虚拟机操作码的长度为一个字节,这意味着指令集的操作码,总数不可能超过256条。
  • 如果不考虑异常处理的话,那么Java虚拟机的解释器可以使用下面这个伪代码当作最基本的执行模型来理解
do{
         自动计算 PC寄存器的值+1;
         根据PC寄存器的指示位置,从字节码流中取出操作码;
         if( 字节码存在操作数) 从字节码流中取出操作数;
          执行操作码所定义的操作;
}while(字节码长度>0);

加载和存储指令

作用

加载和存储指令用于将数据从栈帧的局部变量表和操作数栈之间来回传递。

常用指令

qq_pic_merged_1659160590434.jpg

局部变量入栈

qq_pic_merged_1659162864204.jpg

常量入栈

qq_pic_merged_1659162846689.jpg

出栈装入

qq_pic_merged_1659162901735.jpg

算术指令

qq_pic_merged_1659162923315.jpg

未完待续。。