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

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. spring4+hibernate4+struts2项目整合的步骤及注意事项

    首先,在整合框架之前,我们需要知道Spring框架在普通Java project和Web project中是略有不同的. 这个不同地方就在于创建IOC容器实例的方式不同,在普通java工程中,可以在m ...

  2. 利用GeoWebCache实现WebGIS地形图展示的缓存优化

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.前言 在WebGIS中,影像金字塔是一个很重要的概念.在WebGI ...

  3. js做通讯录的索引滑动显示效果和滑动显示锚点效果

    只做实现..完全没考虑性能优化.所以我实现了以后特别卡. 第一个是在通讯录右边的索引条上进行滑动,滑动到相应字母就跳转到相应字母的锚点上. 思路:监听touchmove事件,获取clientX和cli ...

  4. learn shell

    the basic shell skills.   Bourne shell sh ksh Bash psh zsh C shell csh tcsh   [root@bogon temp]# cat ...

  5. github上传项目(使用git)、删除项目、添加协作者

    一.注册github账号 github网址https://github.com/ 下一步 然后,你的邮箱会收到一封邮件,进行邮箱验证就行了 二.创建github仓库 登录你的github,在首页的右方 ...

  6. Hibernate —— Session

    一.概述 Session 是 Hibernate 向应用程序提供操纵数据的主要接口,它提供了基本的保存.更新.删除和加载 Java 对象的方法. 二.Session 缓存 1.简介 (1)Sessio ...

  7. C#使用资源文件的方法

    其实,对于资源文件的使用,说白点就是通过强制类型转换,将资源文件里的数据强行的转换成你需要的(换种方式说,就是你原来存进去什么,就用什么类型拿出来). 主要通过System.Resources.Res ...

  8. 【Win10开发】如何在页面之间传值

    我们知道UWP是通过不同的页面来展示不同的内容的,那么我们该怎么进行页面之间的传值呢? 首先我们在MainPage里面写一个ListView来展示一些英文单词. List<English> ...

  9. Sql server函数的学习1(系统变量、错误函数、转换函数)

    一.系统变量的介绍和使用 1.@@ERROR 变量 2.@@SERVICENAME 变量 3.@@TOTAL_ERRORS 变量 4.@@TOTAL_READ 变量 5.@@VERSION 变量 二. ...

  10. Verilog学习笔记简单功能实现(二)...............全加器

    先以一位全加器为例:Xi.Yi代表两个加数,Cin是地位进位信号,Cout是向高位的进位信号.列表有:   Xi     Yi    Cin Sum Cout 0 0 0 0 0 0 0 1 1 0 ...