zoukankan      html  css  js  c++  java
  • android开发自己总结的java字节码常见指令

    自己总结的java字节码常见指令:

    ldc:将常量值从常量池中推送至栈顶

    pop:将栈顶数值弹出

    dup:复制栈顶数值并将复制值压入栈顶

    局部变量表 -> 操作数栈:load指令(将数据加载到操作栈)

    操作数栈 -> 局部变量表:store指令(将数据存储到变量表)

    i整数,l长整数,f浮点数,d双精度浮点数,a对象引用

    iadd整数相加,is整数相减,imul整数相乘,idiv整数除,irem整数取余,ineg整数取负,其他类似。

    调用构造函数:invokespecial,调用实例方法:invokevirtual,调用静态方法:invokestatic

    ireturn表示方法返回整数类型,areturn表示方法返回对象引用比如this,其他类似。

    javap查看class字节码命令:javap -v -p Test.class

    CAFE(2字节)BABE(2字节)、次版本(2字节)、主版本(2字节)、常量池大小(2字节)、常量池数据、

    类访问标志(2字节)、类索引(2字节)、父类索引(2字节)、

    接口计数器(2字节)、接口列表

    字段计数器(2字节)、字段列表

    方法计数器(2字节)、方法列表

    属性计数器(2字节)、属性列表


    别人总结的:https://blog.csdn.net/qq271859852/article/details/78307232

    JVM指令助记符

    变量到操作数栈:iload,iload_,lload,lload_,fload,fload_,dload,dload_,aload,aload_
    操作数栈到变量:istore,istore_,lstore,lstore_,fstore,fstore_,dstore,dstor_,astore,astore_
    常数到操作数栈:bipush,sipush,ldc,ldc_w,ldc2_w,aconst_null,iconst_ml,iconst_,lconst_,fconst_,dconst_
    加:iadd,ladd,fadd,dadd
    减:is ,ls ,fs ,ds
    乘:imul,lmul,fmul,dmul
    除:idiv,ldiv,fdiv,ddiv
    余数:irem,lrem,frem,drem
    取负:ineg,lneg,fneg,dneg
    移位:ishl,lshr,iushr,lshl,lshr,lushr
    按位或:ior,lor
    按位与:iand,land
    按位异或:ixor,lxor
    类型转换:i2l,i2f,i2d,l2f,l2d,f2d(放宽数值转换)
    i2b,i2c,i2s,l2i,f2i,f2l,d2i,d2l,d2f(缩窄数值转换)

    创建类实便:new
    创建新数组:newarray,anewarray,multianwarray
    访问类的域和类实例域:getfield,putfield,getstatic,putstatic
    把数据装载到操作数栈:baload,caload,saload,iaload,laload,faload,daload,aaload
    从操作数栈存存储到数组:bastore,castore,sastore,iastore,lastore,fastore,dastore,aastore
    获取数组长度:arraylength
    检相类实例或数组属性:instanceof,checkcast
    操作数栈管理:pop,pop2,dup,dup2,dup_xl,dup2_xl,dup_x2,dup2_x2,swap
    有条件转移:ifeq,iflt,ifle,ifne,ifgt,ifge,ifnull,ifnonnull,if_icmpeq,if_icmpene,
    if_icmplt,if_icmpgt,if_icmple,if_icmpge,if_acmpeq,if_acmpne,lcmp,fcmpl
    fcmpg,dcmpl,dcmpg
    复合条件转移:tableswitch,lookupswitch
    无条件转移:goto,goto_w,jsr,jsr_w,ret
    调度对象的实便方法:invokevirt l
    调用由接口实现的方法:invokeinterface
    调用需要特殊处理的实例方法:invokespecial
    调用命名类中的静态方法:invokestatic
    方法返回:ireturn,lreturn,freturn,dreturn,areturn,return
    异常:athrow
    finally关键字的实现使用:jsr,jsr_w,ret

  • 相关阅读:
    IOS:接口返回包含转义字符去掉转义字符
    properties和yml进行对比
    IDEA安装插件时搜索不到,一直在转圈刷新,无法安装
    VMware 15 虚拟机黑屏问题
    扩容根分区
    CentOS 6 各种启动文件损坏及修复
    RabbitMQ面试题
    FTP,SFTP服务器登录权限和根目录的设置
    Tee命令的几个使用实例
    ssh-copy-id 后无法免密登录
  • 原文地址:https://www.cnblogs.com/yongfengnice/p/14690445.html
Copyright © 2011-2022 走看看