一点JVM字节码指令介绍

Posted 天道酬勤

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一点JVM字节码指令介绍相关的知识,希望对你有一定的参考价值。

Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的数字(操作码)以及跟随其后的零至多个代表此操作所需参数(操作数)构成。字节码指令集是一种具有鲜明特点、优劣势都很突出的指令集架构,由于限制了Java虚拟机操作码的长度为一个字节,所以指令集的操作码总数不可能超过256条。

加载和存储指令

  • 将一个局部变量加载到操作栈

    iload、iload_<n>、lload、lload_<n>、fload、fload_<n>、dload、dload_<n>、aload、aload_<n>
  • 将一个数值从操作数栈存储到局部变量表

    fstore、fstore_<n>、dstore、dstore_<n>、astore、astore_<n>、istore、istore_<n>、lstore、lstore_<n>
  • 将一个常量加载到操作数栈

    bipush、sipush、ldc、ldc_w、ldc2_w、aconst_null、iconst_ml、iconst_<i>、lconst_<l>、fconst_<f>、dconst_<d>
  • 扩充局部变量表的访问索引的指令

    wide

运算指令

  • 加法指令

    iadd、ladd、fadd、dadd
  • 减法指令

    isub、lsub、fsub、dsub
  • 乘法指令

    imul、lmul、fmul、dmul
  • 除法指令

    idiv、ldiv、fdiv、ddiv
  • 求余指令

    irem、lrem、frem、drem
  • 取反指令

    ineg、lneg、fneg、dneg
  • 位移指令

    ishl、ishr、iushr、lshl、lshe、lushr
  • 按位或指令

    ior、lor
  • 按位与指令

    iand、land
  • 按位异或指令

    ixor、lxor
  • 局部变量自增指令

    iinc
  • 比较指令

    dcmpg、dcmpl、fcmpg、fcmpl、lcmp

以上是关于一点JVM字节码指令介绍的主要内容,如果未能解决你的问题,请参考以下文章

JVM技术专题 class字节码指令操作介绍「上篇」

JVM技术专题 字节码指令集调用执行流程分析「语法分析篇」

JVM原理探索字节码指令集调用执行流程分析(语法分析篇)

JVM字节码执行模型及字节码指令集面试+工作

深度详解JVM类字节码

深入理解JVM - 字节码指令