Class JasminDumper

  • All Implemented Interfaces:
    org.objectweb.asm.Opcodes

    public class JasminDumper
    extends java.lang.Object
    implements org.objectweb.asm.Opcodes
    get from asm example

    Disassembled view of the classes in Jasmin assembler format.

    The trace printed when visiting the Hello class is the following:

     .bytecode 45.3
     .class public Hello
     .super java/lang/Object
    
     .method public <init>()V
     aload 0
     invokespecial java/lang/Object/<init>()V
     return
     .limit locals 1
     .limit stack 1
     .end method
    
     .method public static main([Ljava/lang/String;)V
     getstatic java/lang/System/out Ljava/io/PrintStream;
     ldc "hello"
     invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V
     return
     .limit locals 2
     .limit stack 2
     .end method
     
    where Hello is defined by:

     public class Hello {
    
         public static void main(String[] args) {
             System.out.println("hello");
         }
     }
     
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected java.util.Map<org.objectweb.asm.Label,​java.lang.String> labelNames
      The label names.
      protected java.io.PrintWriter pw
      The print writer to be used to print the class.
      • Fields inherited from interface org.objectweb.asm.Opcodes

        AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_MANDATED, ACC_MODULE, ACC_NATIVE, ACC_OPEN, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_RECORD, ACC_STATIC, ACC_STATIC_PHASE, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_TRANSITIVE, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASM10_EXPERIMENTAL, ASM4, ASM5, ASM6, ASM7, ASM8, ASM9, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DOUBLE, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F_APPEND, F_CHOP, F_FULL, F_NEW, F_SAME, F_SAME1, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAT, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, H_GETFIELD, H_GETSTATIC, H_INVOKEINTERFACE, H_INVOKESPECIAL, H_INVOKESTATIC, H_INVOKEVIRTUAL, H_NEWINVOKESPECIAL, H_PUTFIELD, H_PUTSTATIC, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILOAD, IMUL, INEG, INSTANCEOF, INTEGER, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISUB, IUSHR, IXOR, JSR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDIV, LLOAD, LMUL, LNEG, LONG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, NULL, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SOURCE_DEPRECATED, SOURCE_MASK, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, TOP, UNINITIALIZED_THIS, V_PREVIEW, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7, V1_8, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V9
    • Constructor Summary

      Constructors 
      Constructor Description
      JasminDumper​(java.io.PrintWriter pw)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected java.lang.String accessClz​(int access)  
      protected java.lang.String accessFld​(int access)  
      protected java.lang.String accessMtd​(int access)  
      void dump​(org.objectweb.asm.tree.ClassNode cn)  
      protected void print​(int opcode)  
      protected void print​(java.lang.Object cst)  
      protected void print​(org.objectweb.asm.Label l)  
      protected void print​(org.objectweb.asm.tree.LabelNode l)  
      protected void printAnnotation​(org.objectweb.asm.tree.AnnotationNode n, int visible, int param)  
      protected void printAnnotationArrayValue​(java.lang.Object value)  
      protected void printAnnotationValue​(java.lang.Object value)  
      protected void printFrameType​(java.lang.Object type)  
      protected void println​(java.lang.String directive, java.lang.String arg)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • pw

        protected java.io.PrintWriter pw
        The print writer to be used to print the class.
      • labelNames

        protected final java.util.Map<org.objectweb.asm.Label,​java.lang.String> labelNames
        The label names. This map associate String values to Label keys.
    • Constructor Detail

      • JasminDumper

        public JasminDumper​(java.io.PrintWriter pw)
    • Method Detail

      • dump

        public void dump​(org.objectweb.asm.tree.ClassNode cn)
      • println

        protected void println​(java.lang.String directive,
                               java.lang.String arg)
      • accessClz

        protected java.lang.String accessClz​(int access)
      • accessFld

        protected java.lang.String accessFld​(int access)
      • accessMtd

        protected java.lang.String accessMtd​(int access)
      • print

        protected void print​(int opcode)
      • print

        protected void print​(java.lang.Object cst)
      • print

        protected void print​(org.objectweb.asm.Label l)
      • print

        protected void print​(org.objectweb.asm.tree.LabelNode l)
      • printAnnotation

        protected void printAnnotation​(org.objectweb.asm.tree.AnnotationNode n,
                                       int visible,
                                       int param)
      • printAnnotationValue

        protected void printAnnotationValue​(java.lang.Object value)
      • printAnnotationArrayValue

        protected void printAnnotationArrayValue​(java.lang.Object value)
      • printFrameType

        protected void printFrameType​(java.lang.Object type)