个人常用JVM指令---待补充

指令码                  助记符                                        说明

0X00                     nop                                              啥也不干吐舌头

0X01                     aconst_null                                  将null推送到栈顶

 

  • const系列------将简单的数值类型推送到栈顶

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推送至栈顶

 

  • ldc系列----负责将数值常量或字符串常量推送到栈顶

0x12                    ldc                              将int, float或String型常量值从常量池中推送至栈顶

 

  • store系列---负责将栈顶的值存入本地变量

0x36                          istore                    将栈顶int型数值存入指定本地变量

0x37                         lstore                    将栈顶long型数值存入指定本地变量

0x38                          fstore                    将栈顶float型数值存入指定本地变量

0x39                          dstore                   将栈顶double型数值存入指定本地变量

0x3a                          astore                   将栈顶引用型数值存入指定本地变量

0x3b                          istore_0                将栈顶int型数值存入第一个本地变量

0x3c                          istore_1                将栈顶int型数值存入第二个本地变量

0x3d                          istore_2                将栈顶int型数值存入第三个本地变量

0x3e                          istore_3                将栈顶int型数值存入第四个本地变量

0x3f                           lstore_0                将栈顶long型数值存入第一个本地变量

0x40                          lstore_1                将栈顶long型数值存入第二个本地变量

0x41                          lstore_2                将栈顶long型数值存入第三个本地变量

0x42                          lstore_3                将栈顶long型数值存入第四个本地变量

0x43                          fstore_0                将栈顶float型数值存入第一个本地变量

0x44                          fstore_1                将栈顶float型数值存入第二个本地变量

0x45                          fstore_2                将栈顶float型数值存入第三个本地变量

0x46                          fstore_3                将栈顶float型数值存入第四个本地变量

0x47                          dstore_0               将栈顶double型数值存入第一个本地变量

0x48                          dstore_1               将栈顶double型数值存入第二个本地变量

0x49                          dstore_2               将栈顶double型数值存入第三个本地变量

0x4a                          dstore_3               将栈顶double型数值存入第四个本地变量

0x4b                          astore_0               将栈顶引用型数值存入第一个本地变量

0x4c                           astore_1               将栈顶引用型数值存入第二个本地变量

0x4d                           astore_2                将栈顶引用型数值存入第三个本地变量

0x4e                           astore_3                将栈顶引用型数值存入第四个本地变量

 

  • 域操作指令系列--------------用于对静态域或非静态域进行读写 该类指令需要跟一个标识域的编号

 

0xb2                           getstatic                    获取指定类的静态域,并将其值压入栈顶

0xb3                           putstatic                    用栈顶的值为指定的类的静态域赋值

0xb4                           getfield                      获取指定类的实例域,并将其值压入栈顶

0xb5                           putfield                       用栈顶的值为指定的类的实例域赋值

 

  • 方法操作指令系列------------------用于对静态方法以及非静态方法的调用 需要跟一个方法的编号

 

0xb6                            invokevirtual                              调用实例方法

0xb7                            invokespecial                            调用超类构造方法,实例初始化方法,私有方法

0xb8                            invokestatic                               调用静态方法

0xb9                            invokeinterface                          调用接口方法

 

  • new系列指令----------用于创建一个对象或数组

 

0xbb                            new                                            创建一个对象,并将其引用值压入栈顶

0xbc                            newarray                                    创建一个指定原始类型(如int, float, char…)的数组,并将其引用值压入栈顶

0xbd                            anewarray                                 创建一个引用型(如类,接口,数组)的数组,并将其引用值压入栈顶

0xbe                             arraylength                                获得数组的长度值并压入栈顶

 

  • 返回指令系列--------------用于从方法中返回

 

0xac                               ireturn                                        从当前方法返回int

0xad                               lreturn                                       从当前方法返回long

0xae                               freturn                                       从当前方法返回float

0xaf                                dreturn                                     从当前方法返回double

0xb0                               areturn                                     从当前方法返回对象引用

0xb1                               return                                       从当前方法返回void

 

你可能感兴趣的:(jvm)