整理如下,用于以后查找:

Opcode Mnemonics Note
Constants
0x00 nop 无动作
0x01 aconst_null 把 null 推到操作数栈
0x02 iconst_m1 把 int 常量 –1 推到操作数栈
0x03 iconst_0 把 int 常量 0 推到操作数栈
0x04 iconst_1 把 int 常量 1 推到操作数栈
0x05 iconst_2 把 int 常量 2 推到操作数栈
0x06 iconst_3 把 int 常量 3 推到操作数栈
0x07 iconst_4 把 int 常量 4 推到操作数栈
0x08 iconst_5 把 int 常量 5 推到操作数栈
0x09 lconst_0 把 long 常量 0 推到操作数栈
0x0A lconst_1 把 long 常量 1 推到操作数栈
0x0B fconst_0 把 float 常量 0 推到操作数栈
0x0C fconst_1 把 float 常量 1 推到操作数栈
0x0D fconst_2 把 float 常量 2 推到操作数栈
0x0E dconst_0 把 double 常量 0 推到操作数栈
0x0F dconst_1 把 double 常量 1 推到操作数栈
0x10 bipush 把单字节常量(-128~127)推到操作数栈
0x11 sipush 把 short 常量(-32768~32767)推到操作数栈
0x12 ldc 把常量池中的int,float,String型常量取出并推到操作数栈
0x13 ldc_w 把常量池中的int,float,String型常量取出并推到操作数栈(宽索引)
0x14 ldc2_w 把常量池中的long,double型常量取出并推到操作数栈(宽索引)
Loads
0x15 iload 把 int 型局部变量推到操作数栈
0x16 lload 把 long 型局部变量推到操作数栈
0x17 fload 把 float 型局部变量推到操作数栈
0x18 dload 把 double 型局部变量推到操作数栈
0x19 aload 把引用型局部变量推到操作数栈
0x1A iload_0 把局部变量第 1 个 int 型局部变量推到操作数栈
0x1B iload_1 把局部变量第 2 个 int 型局部变量推到操作数栈
0x1C iload_2 把局部变量第 3 个 int 型局部变量推到操作数栈
0x1D iload_3 把局部变量第 4 个 int 型局部变量推到操作数栈
0x1E lload_0 把局部变量第 1 个 long 型局部变量推到操作数栈
0x1F lload_1 把局部变量第 2 个 long 型局部变量推到操作数栈
0x20 lload_2 把局部变量第 3 个 long 型局部变量推到操作数栈
0x21 lload_3 把局部变量第 4 个 long 型局部变量推到操作数栈
0x22 fload_0 把局部变量第 1 个 float 型局部变量推到操作数栈
0x23 fload_1 把局部变量第 2 个 float 型局部变量推到操作数栈
0x24 fload_2 把局部变量第 3 个 float 型局部变量推到操作数栈
0x25 fload_3 把局部变量第 4 个 float 型局部变量推到操作数栈
0x26 dload_0 把局部变量第 1 个 double 型局部变量推到操作数栈
0x27 dload_1 把局部变量第 2 个 double 型局部变量推到操作数栈
0x28 dload_2 把局部变量第 3 个 double 型局部变量推到操作数栈
0x29 dload_3 把局部变量第 4 个 double 型局部变量推到操作数栈
0x2A aload_0 把局部变量第 1 个引用型局部变量推到操作数栈
0x2B aload_1 把局部变量第 2 个引用型局部变量推到操作数栈
0x2C aload_2 把局部变量第 3 个引用型局部变量推到操作数栈
0x2D aload_3 把局部变量第 4 个引用 型局部变量推到操作数栈
0x2E iaload 把 int 型数组指定索引的值推到操作数栈
0x2F laload 把 long 型数组指定索引的值推到操作数栈
0x30 faload 把 float 型数组指定索引的值推到操作数栈
0x31 daload 把 double 型数组指定索引的值推到操作数栈
0x32 aaload 把引用型数组指定索引的值推到操作数栈
0x33 baload 把 boolean或byte型数组指定索引的值推到操作数栈
0x34 caload 把 char 型数组指定索引的值推到操作数栈
0x35 saload 把 short 型数组指定索引的值推到操作数栈
Stores
0x36 istore 把栈顶 int 型数值存入指定局部变量
0x37 lstore 把栈顶 long 型数值存入指定局部变量
0x38 fstore 把栈顶 float 型数值存入指定局部变量
0x39 dstore 把栈顶 double 型数值存入指定局部变量
0x3A astore 把栈顶引用型数值存入指定局部变量
0x3B istore_0 把栈顶 int 型数值存入第 1 个局部变量
0x3C istore_1 把栈顶 int 型数值存入第 2 个局部变量
0x3D istore_2 把栈顶 int 型数值存入第 3 个局部变量
0x3E istore_3 把栈顶 int 型数值存入第 4 个局部变量
0x3F lstore_0 把栈顶 long 型数值存入第 1 个局部变量
0x40 lstore_1 把栈顶 long 型数值存入第 2 个局部变量
0x41 lstore_2 把栈顶 long 型数值存入第 3 个局部变量
0x42 lstore_3 把栈顶 long 型数值存入第 4 个局部变量
0x43 fstore_0 把栈顶 float 型数值存入第 1 个局部变量
0x44 fstore_1 把栈顶 float 型数值存入第 2 个局部变量
0x45 fstore_2 把栈顶 float 型数值存入第 3 个局部变量
0x46 fstore_3 把栈顶 float 型数值存入第 4 个局部变量
0x47 dstore_0 把栈顶 double 型数值存入第 1 个局部变量
0x48 dstore_1 把栈顶 double 型数值存入第 2 个局部变量
0x49 dstore_2 把栈顶 double 型数值存入第 3 个局部变量
0x4A dstore_3 把栈顶 double 型数值存入第 4 个局部变量
0x4B astore_0 把栈顶 引用 型数值存入第 1 个局部变量
0x4C astore_1 把栈顶 引用 型数值存入第 2 个局部变量
0x4D astore_2 把栈顶 引用 型数值存入第 3 个局部变量
0x4E astore_3 把栈顶 引用 型数值存入第 4 个局部变量
0x4F iastore 把栈顶 int 型数值存入数组指定索引位置
0x50 lastore 把栈顶 long 型数值存入数组指定索引位置
0x51 fastore 把栈顶 float 型数值存入数组指定索引位置
0x52 dastore 把栈顶 double 型数值存入数组指定索引位置
0x53 aastore 把栈顶 引用 型数值存入数组指定索引位置
0x54 bastore 把栈顶 boolean or byte 型数值存入数组指定索引位置
0x55 castore 把栈顶 char 型数值存入数组指定索引位置
0x56 sastore 把栈顶 short 型数值存入数组指定索引位置
Stack
0x57 pop 把栈顶数值弹出(非long,double数值)
0x58 pop2 把栈顶的一个long或double值弹出,或弹出2个其他类型数值
0x59 dup 复制栈顶数值并把数值入栈
0x5A dup_x1 复制栈顶数值并把数值入栈
0x5B dup_x2
0x5C dup2
0x5D dup2_x1
0x5E dup2_x2
0x5F swap 把栈顶端的两个数的值交换
Math
0x60 iadd 把栈顶两个 int 型数值相加并将结果入栈
0x61 ladd 把栈顶两个 long 型数值相加并将结果入栈
0x62 fadd 把栈顶两个 float 型数值相加并将结果入栈
0x63 dadd 把栈顶两个 double 型数值相加并将结果入栈
0x64 isub 把栈顶两个 int 型数值相减并将结果入栈
0x65 lsub 把栈顶两个 long 型数值相减并将结果入栈
0x66 fsub 把栈顶两个 float 型数值相减并将结果入栈
0x67 dsub 把栈顶两个 double 型数值相减并将结果入栈
0x68 imul 把栈顶两个 int 型数值相乘并将结果入栈
0x69 lmul 把栈顶两个 long 型数值相乘并将结果入栈
0x6A fmul 把栈顶两个 float 型数值相乘并将结果入栈
0x6B dmul 把栈顶两个 double 型数值相乘并将结果入栈
0x6C idiv 把栈顶两个 int 型数值相除并将结果入栈
0x6D ldiv 把栈顶两个 long 型数值相除并将结果入栈
0x6E fdiv 把栈顶两个 float 型数值相除并将结果入栈
0x6F ddiv 把栈顶两个 double 型数值相除并将结果入栈
0x70 irem 把栈顶两个 int 型数值模运算并将结果入栈
0x71 lrem 把栈顶两个 long 型数值模运算并将结果入栈
0x72 frem 把栈顶两个 float 型数值模运算并将结果入栈
0x73 drem 把栈顶两个 double 型数值模运算并将结果入栈
0x74 ineg 把栈顶 int 型数值取负并将结果入栈
0x75 lneg 把栈顶 long 型数值取负并将结果入栈
0x76 fneg 把栈顶 float 型数值取负并将结果入栈
0x77 dneg 把栈顶 double 型数值取负并将结果入栈
0x78 ishl 把 int 型数左移指定位数并将结果入栈
0x79 lshl 把 long 型数左移指定位数并将结果入栈
0x7A ishr 把 int 型数右移指定位数并将结果入栈(有符号)
0x7B lshr 把 long 型数右移指定位数并将结果入栈(有符号)
0x7C iushr 把 int 型数右移指定位数并将结果入栈(无符号)
0x7D lushr 把 long 型数右移指定位数并将结果入栈(无符号)
0x7E iand 把栈顶两个 int 型数值 按位与 并将结果入栈
0x7F land 把栈顶两个 long 型数值 按位与 并将结果入栈
0x80 ior 把栈顶两个 int 型数值 按位或 并将结果入栈
0x81 lor 把栈顶两个 long 型数值 按或与 并将结果入栈
0x82 ixor 把栈顶两个 int 型数值 按位异或 并将结果入栈
0x83 lxor 把栈顶两个 long 型数值 按位异或 并将结果入栈
0x84 iinc 把指定 int 型增加指定值
Conversions
0x85 i2l 把栈顶 int 强转 long 并入栈
0x86 i2f 把栈顶 int 强转 float 并入栈
0x87 i2d 把栈顶 int 强转 double 并入栈
0x88 l2i 把栈顶 long 强转 int 并入栈
0x89 l2f 把栈顶 long 强转 float 并入栈
0x8A l2d 把栈顶 long 强转 double 并入栈
0x8B f2i 把栈顶 float 强转 int 并入栈
0x8C f2l 把栈顶 float 强转 long 并入栈
0x8D f2d 把栈顶 float 强转 double 并入栈
0x8E d2i 把栈顶 double 强转 int 并入栈
0x8F d2l 把栈顶 double 强转 long 并入栈
0x90 d2f 把栈顶 double 强转 float 并入栈
0x91 i2b 把栈顶 int 强转 byte 并入栈
0x92 i2c 把栈顶 int 强转 char 并入栈
0x93 i2s 把栈顶 int 强转 short 并入栈
Comparisons
0x94 lcmp 比较栈顶两个long 型数值,把结果入栈(-1 or 0 or 1)
0x95 fcmpl 比较栈顶两个 float 型数值,把结果入栈,若有 NaN,入栈 -1
0x96 fcmpg 比较栈顶两个 float 型数值,把结果入栈,若有 NaN,入栈 1
0x97 dcmpl 比较栈顶两个 double 型数值,把结果入栈,若有 NaN,入栈 -1
0x98 dcmpg 比较栈顶两个 double 型数值,把结果入栈,若有 NaN,入栈 -1
0x99 ifeq 当栈顶 int 型数值等于0时,跳转
0x9A ifne 当栈顶 int 型数值不等于0时,跳转
0x9B iflt 当栈顶 int 型数值小于0时,跳转
0x9C ifge 当栈顶 int 型数值大于等于0时,跳转
0x9D ifgt 当栈顶 int 型数值大于0时,跳转
0x9E ifle 当栈顶 int 型数值小于等于0时,跳转
0x9F if_icmpeq 比较栈顶两个 int 型数值,等于0时,跳转
0xA0 if_icmpne 比较栈顶两个 int 型数值,不等于0时,跳转
0xA1 if_icmplt 比较栈顶两个 int 型数值,小于0时,跳转
0xA2 if_icmpge 比较栈顶两个 int 型数值,大于等于0时,跳转
0xA3 if_icmpgt 比较栈顶两个 int 型数值,大于0时,跳转
0xA4 if_icmple 比较栈顶两个 int 型数值,小于等于0时,跳转
0xA5 if_acmpeq 比较栈顶两个 引用 型数值,相等时跳转
0xA6 if_acmpne 比较栈顶两个 引用 型数值,不相等时跳转
Control
0xA7 goto 无条件跳转
0xA8 jsr 跳转指定16bit偏移位置,并将jsr下一条指令地址入栈
0xA9 ret 返回局部变量指定index指定位置,与jsr,jsr_w配合使用
0xAA tableswitch switch跳转,case连续
0xAB lookupswitch switch跳转,case不连续
0xAC ireturn 从当前方法返回 int
0xAD lreturn 从当前方法返回 long
0xAE freturn 从当前方法返回 float
0xAF dreturn 从当前方法返回 double
0xB0 areturn 从当前方法返回 对象引用
0xB1 return 从当前方法返回 void
References
0xB2 getstatic 获取类的静态域,并将值入栈顶
0xB3 putstatic 为类的静态域赋值
0xB4 getfield 获取类的实例域,并将值入栈顶
0xB5 putfield 为类的实例域赋值
0xB6 invokevirtual 调用实例方法
0xB7 invokespecial 调用父类构造方法,实例初始化方法,私有方法
0xB8 invokestatic 调用静态方法
0xB9 invokeinterface 调用接口方法
0xBA invokedynamic 调用动态链接方法
0xBB new 创建一个对象,并将引用值入栈
0xBC newarray 创建一个原始类型数组,并将引用值入栈
0xBD anewarray 创建一个引用类型数组,并将引用值入栈
0xBE arraylength 获取数组长度并入栈
0xBF athrow 抛出栈顶异常
0xC0 checkcast 检验类型转换
0xC1 instanceof 检验是否是类的实例,是1入栈,否0入栈
0xC2 monitorenter 获取对象的monitor,用于同步块或方法
0xC3 monitorexit 释放对象的monitor,用于同步块或方法
Extended
0xC4 wide 扩展访问局部变量表的索引宽度
0xC5 multianewarray 创建多维数组,并将引用值入栈
0xC6 ifnull 为 null 时跳转
0xC7 ifnonnull 非 null 时跳转
0xC8 goto_w 无条件跳转(宽索引)
0xC9 jsr_w 跳转指定32bit偏移位置,并将jsr_w下一条指令地址入栈
Reserved
0xCA breakpoint 调试时的断点
0xFE impdep1 用于在特定硬件中使用的语言后门
0xFF impdep2 用于在特定硬件中使用的语言后门

JVM-操作码助记符的更多相关文章

  1. JVM指令助记符

    以下只是JVM指令助记符,关于JVM指令的详细内容请阅读<JVM指令详解> 变量到操作数栈:iload,iload_,lload,lload_,fload,fload_,dload,dlo ...

  2. Java SE7虚拟机指令操作码助记符

    本文转载自Java SE7 虚拟机指令操作码助记符 导语 在Class文件中,Java方法里的方法体,也就是代表着一个Java源码程序中程序的部分存储在方法表集合的Code属性中.存储在Code属性中 ...

  3. 004-JVM指令集(指令码、助记符、功能描述)

    一.JVM指令助记符 1)操作数栈 变量到操作数栈:iload,iload_,lload,lload_,fload,fload_,dload,dload_,aload,aload_ 操作数栈到变量:i ...

  4. [三] java虚拟机 JVM字节码 指令集 bytecode 操作码 指令分类用法 助记符

    说明,本文的目的在于从宏观逻辑上介绍清楚绝大多数的字节码指令的含义以及分类 只要认真阅读本文必然能够对字节码指令集有所了解 如果需要了解清楚每一个指令的具体详尽用法,请参阅虚拟机规范 指令简介 计算机 ...

  5. JVM指令集(指令码、助记符、功能描述)(转)

    JVM指令集(指令码.助记符.功能描述) 指令码 助记符 功能描述 0x00 nop 无操作 0x01 aconst_null 指令格式:  aconst_null 功能描述:  null进栈. 指令 ...

  6. JVM指令集(指令码、助记符、功能描述)

    JVM指令集(指令码.助记符.功能描述) 指令码 助记符 功能描述 0x00 nop 无操作 0x01 aconst_null 指令格式:  aconst_null 功能描述:  null进栈. 指令 ...

  7. JAVA JVM助记符

    ldc:将int/float/String类型的常量值从常量池中推送至栈顶(栈顶的值是即将要用的) bipush:将单字节(-128 ~ 127)的常量值从常量池中推至栈顶 sipush:将一个短整型 ...

  8. JVM常量的含义与反编译助记符详解

    1.定义一个常量 public class MyTest2 { public static void main(String[] args) { System.out.println(MyParent ...

  9. jvm字节码助记符

    反编译指令 javap -c xxxx.class JVM参数设置 -xx:+<option>                  开启option -xx: -<option> ...

随机推荐

  1. iframe编程的一些问题

    前几天做一个用iframe显示曲线图的demo,发现对iframe的contentDocument绑定 onclick事件都无效,而在页面中对iframe.contentDocument的onclic ...

  2. centos7 mysql数据库安装和配置

    一.系统环境 yum update升级以后的系统版本为 [root@yl-web yl]# cat /etc/redhat-release CentOS Linux release 7.1.1503 ...

  3. c#和Javascript中去重总结

    一.前言 去重在我们的开发过程中经常遇到,避免重复元素的添加,我们需要对获取到的集合(包括List.Array等) 做相关的过滤操作.确保对象的唯一性,从而达到保证数据不冗余重复.由于自己是做.net ...

  4. XCode日常使用备忘录

    0. Introduction XCode是macOS上开发app不可缺少的开发者工具,不管是开发macOS上的应用,还是iOS上的应用,都离不开XCode环境.尽管其易用性广受诟病,但由于苹果app ...

  5. Android中TextView setText int 报错

    在对中TextView setText 覆值int 时报错,网上查下原因是setText整型表明是设值R.id.xxx,当然找不到. 解决方法是将int转化为string,用String.valueO ...

  6. Qt自适应大小显示图片,添加菜单

    由于后面的图像处理需要UI,OpenCV自带也不怎么会,MFC实在懒得学的.听同学说Qt不错,就用Qt做UI了. 本文主要介绍三个内容:在Qt Creator中使用OpenCV2.Qt中自适应显示图片 ...

  7. 2.简单的Code First例子(EF Code-First系列)

    现在假想,我们想要为讴歌学校创建一个应用程序,这个程序需要能够来添加或者更新学生,分数,教师还有课程信息. 代替之前我们的做法:先是创建数据库,现在我们不这么做,我们先来创建领域类,首先我来创建两个简 ...

  8. jQuery弹出美女大图片

    效果:http://hovertree.com/texiao/jqimg/2/ 效果图: 下载:http://hovertree.com/h/bjaf/jdaqepet.htm HTML代码: < ...

  9. Java实现时间动态显示方法汇总

    这篇文章主要介绍了Java实现时间动态显示方法汇总,很实用的功能,需要的朋友可以参考下 本文所述实例可以实现Java在界面上动态的显示时间.具体实现方法汇总如下: 1.方法一 用TimerTask: ...

  10. C#知识点-委托

    一.什么是委托 委托和类一样,是一种用户自定义类型: 类表示的是数据和方法的集合,而委托则持有一个或多个方法: 二.委托的使用 1.声明委托类型 委托是类型,与类一样,委托类型必须在被用来创建变量以及 ...