微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

一点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
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐