字节码  助记符 指令含义
0x00    nop None
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  将一个短整型常量(-32768~32767)推送至栈顶
0x12    ldc 将int,float或String型常量值从常量池中推送至栈顶
0x13    ldc_w   将int,float或String型常量值从常量池中推送至栈顶(宽索引)
0x14    ldc2_w  将long或double型常量值从常量池中推送至栈顶(宽索引)
0x15    iload   将指定的int型本地变量推送至栈顶
0x16    lload   将指定的long型本地变量推送至栈顶
0x17    fload   将指定的float型本地变量推送至栈顶
0x18    dload   将指定的double型本地变量推送至栈顶
0x19    aload   将指定的引用类型本地变量推送至栈顶
0x1a    iload_0 将第一个int型本地变量推送至栈顶
0x1b    iload_1 将第二个int型本地变量推送至栈顶
0x1c    iload_2 将第三个int型本地变量推送至栈顶
0x1d    iload_3 将第四个int型本地变量推送至栈顶
0x1e    lload_0 将第一个long型本地变量推送至栈顶
0x1f    lload_1 将第二个long型本地变量推送至栈顶
0x20    lload_2 将第三个long型本地变量推送至栈顶
0x21    lload_3 将第四个long型本地变量推送至栈顶
0x22    fload_0 将第一个float型本地变量推送至栈顶
0x23    fload_1 将第二个float型本地变量推送至栈顶
0x24    fload_2 将第三个float型本地变量推送至栈顶
0x25    fload_3 将第四个float型本地变量推送至栈顶
0x26    dload_0 将第一个double型本地变量推送至栈顶
0x27    dload_1 将第二个double型本地变量推送至栈顶
0x28    dload_2 将第三个double型本地变量推送至栈顶
0x29    dload_3 将第四个double型本地变量推送至栈顶
0x2a    aload_0 将第一个引用类型本地变量推送至栈顶
0x2b    aload_1 将第二个引用类型本地变量推送至栈顶
0x2c    aload_2 将第三个引用类型本地变量推送至栈顶
0x2d    aload_3 将第四个引用类型本地变量推送至栈顶
0x2e    iaload  将int型数组指定索引的值推送至栈顶
0x2f    laload  将long型数组指定索引的值推送至栈顶
0x30    faload  将float型数组指定索引的值推送至栈顶
0x31    daload  将double型数组指定索引的值推送至栈顶
0x32    aaload  将引用类型数组指定索引的值推送至栈顶
0x33    baload  将boolean或byte型数组指定索引的值推送至栈顶
0x34    caload  将char型数组指定索引的值推送至栈顶
0x35    saload  将short型数组指定索引的值推送至栈顶
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    将栈顶引用型数值存入第四个本地变量
0x4f    iastore 将栈顶int型数值存入指定数组的指定索引位置
0x50    lastore 将栈顶long型数值存入指定数组的指定索引位置
0x51    fastore 将栈顶float型数值存入指定数组的指定索引位置
0x52    dastore 将栈顶double型数值存入指定数组的指定索引位置
0x53    aastore 将栈顶引用型数值存入指定数组的指定索引位置
0x54    bastore 将栈顶boolean或byte型数值存入指定数组的指定索引位置
0x55    castore 将栈顶char型数值存入指定数组的指定索引位置
0x56    sastore 将栈顶short型数值存入指定数组的指定索引位置
0x57    pop 将栈顶数值弹出(数值不能是long或double类型的)
0x58    pop2    将栈顶的一个(对于非long或double类型)或两个数值(对于非long或double的其他类型)弹出
0x59    dup 复制栈顶数值并将复制值压入栈顶
0x5a    dup_x1  复制栈顶数值并将两个复制值压入栈顶
0x5b    dup_x2  复制栈顶数值并将三个(或两个)复制值压入栈顶
0x5c    dup2    复制栈顶一个(对于long或double类型)或两个(对于非long或double的其他类型)数值并将复制值压入栈顶
0x5d    dup2_x1 dup_x1指令的双倍版本
0x5e    dup2_x2 dup_x2指令的双倍版本
0x5f    swap    将栈顶最顶端的两个数值互换(数值不能是long或double类型)
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型变量增加指定值(如i++, i--, i+=2等)
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型数值并将结果压入栈顶
0x94    lcmp    比较栈顶两long型数值大小, 并将结果(1, 0或-1)压入栈顶
0x95    fcmpl   比较栈顶两float型数值大小, 并将结果(1, 0或-1)压入栈顶; 当其中一个数值为NaN时, 将-1压入栈顶
0x96    fcmpg   比较栈顶两float型数值大小, 并将结果(1, 0或-1)压入栈顶; 当其中一个数值为NaN时, 将1压入栈顶
0x97    dcmpl   比较栈顶两double型数值大小, 并将结果(1, 0或-1)压入栈顶; 当其中一个数值为NaN时, 将-1压入栈顶
0x98    dcmpg   比较栈顶两double型数值大小, 并将结果(1, 0或-1)压入栈顶; 当其中一个数值为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   比较栈顶两引用型数值, 当结果不相等时跳转
0xa7    goto    无条件跳转
0xa8    jsr 跳转至指定的16位offset位置, 并将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
0xb2    getstatic   获取指定类的静态域, 并将其压入栈顶
0xb3    putstatic   为指定类的静态域赋值
0xb4    getfield    获取指定类的实例域, 并将其压入栈顶
0xb5    putfield    为指定类的实例域赋值
0xb6    invokevirtual   调用实例方法
0xb7    invokespecial   调用超类构建方法, 实例初始化方法, 私有方法
0xb8    invokestatic    调用静态方法
0xb9    invokeinterface 调用接口方法
0xba    invokedynamic   调用动态方法
0xbb    new 创建一个对象, 并将其引用引用值压入栈顶
0xbc    newarray    创建一个指定的原始类型(如int, float, char等)的数组, 并将其引用值压入栈顶
0xbd    anewarray   创建一个引用型(如类, 接口, 数组)的数组, 并将其引用值压入栈顶
0xbe    arraylength 获取数组的长度值并压入栈顶
0xbf    athrow  将栈顶的异常抛出
0xc0    checkcast   检验类型转换, 检验未通过将抛出 ClassCastException
0xc1    instanceof  检验对象是否是指定类的实际, 如果是将1压入栈顶, 否则将0压入栈顶
0xc2    monitorenter    获得对象的锁, 用于同步方法或同步块
0xc3    monitorexit 释放对象的锁, 用于同步方法或同步块
0xc4    wide    扩展本地变量的宽度
0xc5    multianewarray  创建指定类型和指定维度的多维数组(执行该指令时, 操作栈中必须包含各维度的长度值), 并将其引用压入栈顶
0xc6    ifnull  为null时跳转
0xc7    ifnonnull   不为null时跳转
0xc8    goto_w  无条件跳转(宽索引)
0xc9    jsr_w   跳转至指定的32位offset位置, 并将jsr_w的下一条指令地址压入栈顶LOCK
1.把当前处理器缓存行的数据写回系统内存2.是的 CPU 内的缓存地址失效

引用至:https://gper.club/articles/7e7e7f7ff7g5agc9g65

JVM 字节码 对照表相关推荐

  1. JVM字节码指令集大全及其介绍

    Java是怎么跨平台的 我们上计算机课的时候老师讲过:"计算机只能识别0和1,所以我们写的程序要经过编译器翻译成0和1组成的二进制格式计算机才能执行".我们编译后产生的.class ...

  2. Java生产环境下性能监控与调优详解 第8章 JVM字节码与Java代码层调优

    第8章 JVM字节码与Java代码层调优 8-1 jvm字节码指令-1 8-2 jvm字节码指令-2 8-3 i++与++i 8-4 字符串+拼接 8-5 Try-Finally字节码 8-6 Str ...

  3. 【JVM · 字节码】指令集 解析说明

    1. 概述 Java字节码指令对于虚拟机,就好像汇编语言对于计算机,属于基本执行指令. Java虚拟机的指令由 一个字节长度 的.代表着某种特定操作含义的数字(称为 操作码/Opcode)以及跟随其后 ...

  4. Java指令全集_Java的JVM字节码指令集详解

    本文详细介绍了如何使用javap查看java方法中的字节码.以及各种字节码的含义,并且配以完善的案例,一步步,从头到尾带领大家翻译javap的输出.在文末还附有JVM字节码指令集表. 本文不适合没有J ...

  5. 深入理解JVM字节码(一)

    目录 深入剖析Class文件结构 一.初探class文件 二.class文件结构剖析 (一) 魔数 (二) 版本号 (三) 常量池 1. CONSTANT_Integer_info和CONSTANT_ ...

  6. Android自动化埋点(一) - JVM字节码

    JVM字节码 开头 这一系列文章,主要是讲自动化埋点又叫无痕埋点,或者字节码插桩技术,写这个系列文章的目的是 偶然间发现,网上关于这方面的博客很少,所以我根据自己的一些实战经验,整理了这个系列的文章. ...

  7. java开发C语言编译器:把C实现的快速排序算法编译成jvm字节码

    有了前面一系列的铺垫和准备后,我们终于能走到至关重要的一刻.在本节,我们将用C语言开发快速排序算法,然后利用我们的编译器把它编译成java字节码,让C语言编写的快速排序算法能在java虚拟机上顺利执行 ...

  8. 2个字节能存多少个16进制_初探JVM字节码 - 疾风老头

    作者: LemonNan 原文地址: 代码地址: 字节码 概述 本篇要介绍的是能 "一次编译,到处运行的 JVM 字节码" 为什么能到处运行? 是因为在 任意平台下所编译出来的 c ...

  9. 深入理解JVM字节码(二)

    目录 字节码基础 一.字节码概述 二.Java虚拟机栈和栈帧 栈帧 1. 局部变量表 2. 操作数栈 三.字节码指令 1. 加载和存储指令 2. 操作数栈指令 3. 对象相关的字节码指令 1. ``方 ...

最新文章

  1. 我们为你精选了一份Jupyter/IPython笔记本集合 !(附大量资源链接)-下篇
  2. 数据库路由中间件MyCat - 使用篇(2)
  3. [hypervisor]-ARMV8的hypervisor技术介绍–InProgress
  4. 【转】8086内部结构及原理
  5. Autocad下载 安装 和谐 与 卸载
  6. python空值赋0_Python中的空值判断
  7. 王道8套有变化吗_求求你别再套花艺设计公式了
  8. Lc19删除链表的倒数第N个节点
  9. 12.1 LNMP架构介绍 12.2 MySQL安装 12.3/12.4 PHP安装 12.5 Ng
  10. Extjs中引入JSP页面
  11. 37、我的C#学习笔记3
  12. 多项目公共代码库该如何管理
  13. 谷歌地球尝试验证时检测到错误_验证码为何越来越难了?
  14. 影响力在职场的重要性
  15. 计算机图形学大会和学术刊物编辑
  16. 简单易懂!推荐给自学python的小项目实战!
  17. Boson Netsim 思科路由器仿真 静态路由表、RIP、OSPF
  18. 前端常用属性知识点--文档
  19. 第 8 篇、Linux C 基础 | 运算符
  20. zcu102网口不通

热门文章

  1. SQL读写CSV文件
  2. python html5交互方式,python+Django(5)—回传至前端几种方式
  3. Windows Server 2016-管理Active Directory复制任务
  4. 系统架构师成长之路(三)
  5. mysql 登录默认实例_【MySQL案例】mysql本机登录-S失灵_mysql
  6. java 正则 实例_Java正则表达式示例
  7. 大话css预编译处理(二)安装使用篇
  8. npm、webpack、vue-cli
  9. 自定义应用程序配置文件(app.config)
  10. VMware 虚拟机克隆 CentOS 6.5 之后,网络配置问题的解决方案