JVM指令

作者: LedBoot | 来源:发表于2016-05-27 14:41 被阅读595次
images.png
凡是带const的表示将什么数据压操作数栈
  • iconst_2 将int型数据2压入到操作数栈;
  • aconst_null 将null值压入栈;
  • bipushsipush 表示将单字节或者短整形的常量值压入操作数栈;
带ldc的表示将什么类型数据从常量池中压入到操作数栈。
  • ldc_w 将int或者flat或者string类型的数据压入到操作数栈;
  • ldc2_w 将long或者double类型的数据压入到操作数栈;
凡是带load的指令表示将某类型的局部变量数据压入到操作数栈的栈顶。
  • iload 表示将int类型的局部变量压入到操作数栈的栈顶;
  • aload 以a开头的表示将引用类型的局部变量压入到操作数栈的栈顶;
  • iload_1 将局部变量数组里面下标为1的int类型的数据压入到操作数栈;
  • iaload 将int型数组的指定索引的值压入到操作数栈;
凡是带有store指令的表示将操作数栈顶的某类型的值存入指定的局部变量中。
  • istore 表示将栈顶int类型的数据存入到指定的局部变量中;
  • istore_3 表示将栈int类型的数据存入到局部变量数组的下标为3的元素中;
  • pop 将栈顶数据弹出;
  • pop2将栈顶的一个long或者double数据从栈顶弹出来;
  • dup 复制栈顶的数据并将复制的值也压入到栈顶;
  • dup2 复制栈顶一个long或者是double的数据并将复制的值也压入到栈顶;
  • swap 将栈最顶端的两个值互换;
  • iadd 将栈顶两个int型的数据相加然后将结果再次的压入到栈顶;
  • isub 将栈顶两个int型的数据相减然后将结果再次的压入到栈顶;
  • imul 将栈顶两个int型的数据相乘然后将结果再次的压入到栈顶;
  • idiv 将栈顶两个int型的数据相除然后将结果再次的压入到栈顶;
  • irem 将栈顶两个int型的数据取模运算然后将结果再次的压入到栈顶;
  • ineg 将栈顶的int数据取负将结果压入到栈顶;
  • iinc 将指定的int变量增加指定值(i++,i--,i+=2);
  • i2l 将栈顶int类型数据强制转换成long型将结果压入到栈顶;
  • lcmp 将栈顶两long型数据的大小进行比较,并将结果(1,0,-1)压入栈顶;
以if开头的指令都是跳转指令
  • tableswitchlookupswitch 表示用switch条件跳转;
  • ireturn 从当前方法返回int型数据;
  • getstatic 获取指定类的静态域,将将结果压入到栈顶;
  • putstatic 为指定的类的静态域赋值;
  • getfield 获取指定类的实例变量,将结果压入到栈顶;
  • putfield 为指定类的实例变量赋值;
  • invokevirtual 调用实例方法;
  • invokespacial 调用超类构造方法,实例初始化方法,私有方法;
  • invokestatic 调用静态方法;
  • invokeinterface 调用接口方法;
  • new 创建一个对象,并将其引用压入到栈顶;
  • newarray 创建一个原始类型的数组,并将其引用压入到栈顶;
  • arraylength 获得一个数组的长度,将将结果压入到栈顶;
  • athrow 将栈顶的异常抛出;
  • checkcast 检验类型转换,转换未通过,将抛出ClassCastException;
  • instanceof 检验对象是否是指定的类的实例,如果是将1压入栈顶,否则将0压入栈顶
  • monitorenter 获得对象的锁,用于同步方法或同步块
  • monitorexit 释放对象的锁,用于同步方法或同步块
  • ifnull 为null时跳转
  • ifnonnull 不为null时跳转

相关文章

  • Java多线程实现基础(二)

    Java内存模型 基本概念 指令重排 jvm 指令执行

  • JVM指令

    JVM 指令 指令由一个字节长度的,代表着某种特定操作含义的数字(操作码)以及跟随其后若干个代表此操作所需参数(操...

  • JVM指令

    凡是带const的表示将什么数据压操作数栈 iconst_2 将int型数据2压入到操作数栈; aconst_nu...

  • jvm 指令

    任何一台计算机的指令系统一般都包含有几十条到上百条指令,下面按一般计算机的功能把指令划分以下几种类型.(1)算术运...

  • JVM指令

    具体详细指令的意义请参考下面jvm指令自行查看,进而可明白java源代码执行的过程中jvm做了那些事情。 一、未归...

  • 六、Class字节码指令解释执行

    JVM指令主要包含了一下几种类型:加载和存储指令、运算指令、类型转换指令、对象创建与访问指令、操作数栈管理指令、控...

  • synchronzied偏向锁的批量重偏向与撤销

    JVM在编译synchronzied时,会编译成monitorenter monitorexit指令,是一种JVM...

  • Java虚拟机—字节码指令初探

    前言: Java虚拟机指令是JVM的核心,JVM通过这些指令来取操作数、取引用关系再返回计算结果,从而完成Java...

  • JVM堆栈执行原理

    为保持通用性,JVM基于栈模型执行指令。 JVM数据操作指令也是基于栈。 方法的调用执行类似于深度遍历,沿着某一条...

  • jvm 指令 总数 与 长度

    当前jvm 共有205条指令 0-202 254 255 jvm 指令操作码 只有一个字节. 但操作数不一定...

网友评论

    本文标题:JVM指令

    本文链接:https://www.haomeiwen.com/subject/hkqdhttx.html