RSyntaxTextArea
RSyntaxTextArea copied to clipboard
Java Bytecode syntax style
It would be nice to have a syntax style for java bytecode. Bytecode text generated by ASM looks like this:
// class version 50.0 (50)
// access flags 0x21
public class org/benf/cfr/reader/CfrDriverImpl implements org/benf/cfr/reader/api/CfrDriver {
// access flags 0x9
public static INNERCLASS org/benf/cfr/reader/util/getopt/PermittedOptionProvider$Argument org/benf/cfr/reader/util/getopt/PermittedOptionProvider Argument
// access flags 0x9
public static INNERCLASS org/benf/cfr/reader/util/getopt/PermittedOptionProvider$ArgumentParam org/benf/cfr/reader/util/getopt/PermittedOptionProvider ArgumentParam
// access flags 0x12
private final Lorg/benf/cfr/reader/util/getopt/Options; options
// access flags 0x12
private final Lorg/benf/cfr/reader/apiunreleased/ClassFileSource2; classFileSource
// access flags 0x12
private final Lorg/benf/cfr/reader/api/OutputSinkFactory; outputSinkFactory
// access flags 0x1
public <init>(Lorg/benf/cfr/reader/api/ClassFileSource;Lorg/benf/cfr/reader/api/OutputSinkFactory;Lorg/benf/cfr/reader/util/getopt/Options;)V
ALOAD 0
INVOKESPECIAL java/lang/Object.<init> ()V
ALOAD 3
IFNONNULL L0
NEW org/benf/cfr/reader/util/getopt/OptionsImpl
DUP
NEW java/util/HashMap
DUP
INVOKESPECIAL java/util/HashMap.<init> ()V
INVOKESPECIAL org/benf/cfr/reader/util/getopt/OptionsImpl.<init> (Ljava/util/Map;)V
ASTORE 3
L0
FRAME FULL [org/benf/cfr/reader/CfrDriverImpl org/benf/cfr/reader/api/ClassFileSource org/benf/cfr/reader/api/OutputSinkFactory org/benf/cfr/reader/util/getopt/Options] []
ALOAD 1
IFNONNULL L1
NEW org/benf/cfr/reader/state/ClassFileSourceImpl
DUP
ALOAD 3
INVOKESPECIAL org/benf/cfr/reader/state/ClassFileSourceImpl.<init> (Lorg/benf/cfr/reader/util/getopt/Options;)V
ASTORE 1
L1
FRAME SAME
ALOAD 0
ALOAD 2
PUTFIELD org/benf/cfr/reader/CfrDriverImpl.outputSinkFactory : Lorg/benf/cfr/reader/api/OutputSinkFactory;
ALOAD 0
ALOAD 3
PUTFIELD org/benf/cfr/reader/CfrDriverImpl.options : Lorg/benf/cfr/reader/util/getopt/Options;
ALOAD 0
ALOAD 1
INSTANCEOF org/benf/cfr/reader/apiunreleased/ClassFileSource2
IFEQ L2
ALOAD 1
CHECKCAST org/benf/cfr/reader/apiunreleased/ClassFileSource2
GOTO L3
L2
FRAME SAME1 org/benf/cfr/reader/CfrDriverImpl
NEW org/benf/cfr/reader/state/ClassFileSourceWrapper
DUP
ALOAD 1
INVOKESPECIAL org/benf/cfr/reader/state/ClassFileSourceWrapper.<init> (Lorg/benf/cfr/reader/api/ClassFileSource;)V
L3
FRAME FULL [org/benf/cfr/reader/CfrDriverImpl org/benf/cfr/reader/api/ClassFileSource org/benf/cfr/reader/api/OutputSinkFactory org/benf/cfr/reader/util/getopt/Options] [org/benf/cfr/reader/CfrDriverImpl org/benf/cfr/reader/apiunreleased/ClassFileSource2]
PUTFIELD org/benf/cfr/reader/CfrDriverImpl.classFileSource : Lorg/benf/cfr/reader/apiunreleased/ClassFileSource2;
RETURN
MAXSTACK = 4
MAXLOCALS = 4
// access flags 0x1
// signature (Ljava/util/List<Ljava/lang/String;>;)V
// declaration: void analyse(java.util.List<java.lang.String>)
public analyse(Ljava/util/List;)V
ALOAD 1
INVOKEINTERFACE java/util/List.size ()I (itf)
ICONST_1
IF_ICMPLE L0
ALOAD 0
GETFIELD org/benf/cfr/reader/CfrDriverImpl.options : Lorg/benf/cfr/reader/util/getopt/Options;
GETSTATIC org/benf/cfr/reader/util/getopt/OptionsImpl.SKIP_BATCH_INNER_CLASSES : Lorg/benf/cfr/reader/util/getopt/PermittedOptionProvider$Argument;
INVOKEINTERFACE org/benf/cfr/reader/util/getopt/Options.getOption (Lorg/benf/cfr/reader/util/getopt/PermittedOptionProvider$ArgumentParam;)Ljava/lang/Object; (itf)
CHECKCAST java/lang/Boolean
INVOKEVIRTUAL java/lang/Boolean.booleanValue ()Z
IFEQ L0
ICONST_1
GOTO L1
L0
FRAME SAME
ICONST_0
L1
FRAME SAME1 I
ISTORE 2
ALOAD 1
INVOKESTATIC java/util/Collections.sort (Ljava/util/List;)V
ALOAD 1
INVOKEINTERFACE java/util/List.iterator ()Ljava/util/Iterator; (itf)
ASTORE 3
L2
FRAME APPEND [I java/util/Iterator]
ALOAD 3
INVOKEINTERFACE java/util/Iterator.hasNext ()Z (itf)
IFEQ L3
ALOAD 3
INVOKEINTERFACE java/util/Iterator.next ()Ljava/lang/Object; (itf)
CHECKCAST java/lang/String
ASTORE 4
ALOAD 0
GETFIELD org/benf/cfr/reader/CfrDriverImpl.classFileSource : Lorg/benf/cfr/reader/apiunreleased/ClassFileSource2;
ACONST_NULL
ACONST_NULL
INVOKEINTERFACE org/benf/cfr/reader/apiunreleased/ClassFileSource2.informAnalysisRelativePathDetail (Ljava/lang/String;Ljava/lang/String;)V (itf)
NEW org/benf/cfr/reader/state/DCCommonState
DUP
ALOAD 0
GETFIELD org/benf/cfr/reader/CfrDriverImpl.options : Lorg/benf/cfr/reader/util/getopt/Options;
ALOAD 0
GETFIELD org/benf/cfr/reader/CfrDriverImpl.classFileSource : Lorg/benf/cfr/reader/apiunreleased/ClassFileSource2;
INVOKESPECIAL org/benf/cfr/reader/state/DCCommonState.<init> (Lorg/benf/cfr/reader/util/getopt/Options;Lorg/benf/cfr/reader/apiunreleased/ClassFileSource2;)V
ASTORE 5
ALOAD 0
GETFIELD org/benf/cfr/reader/CfrDriverImpl.outputSinkFactory : Lorg/benf/cfr/reader/api/OutputSinkFactory;
IFNULL L4
NEW org/benf/cfr/reader/util/output/SinkDumperFactory
DUP
ALOAD 0
GETFIELD org/benf/cfr/reader/CfrDriverImpl.outputSinkFactory : Lorg/benf/cfr/reader/api/OutputSinkFactory;
ALOAD 0
GETFIELD org/benf/cfr/reader/CfrDriverImpl.options : Lorg/benf/cfr/reader/util/getopt/Options;
INVOKESPECIAL org/benf/cfr/reader/util/output/SinkDumperFactory.<init> (Lorg/benf/cfr/reader/api/OutputSinkFactory;Lorg/benf/cfr/reader/util/getopt/Options;)V
GOTO L5
L4
FRAME APPEND [java/lang/String org/benf/cfr/reader/state/DCCommonState]
NEW org/benf/cfr/reader/util/output/InternalDumperFactoryImpl
DUP
ALOAD 0
GETFIELD org/benf/cfr/reader/CfrDriverImpl.options : Lorg/benf/cfr/reader/util/getopt/Options;
INVOKESPECIAL org/benf/cfr/reader/util/output/InternalDumperFactoryImpl.<init> (Lorg/benf/cfr/reader/util/getopt/Options;)V
L5
FRAME SAME1 org/benf/cfr/reader/util/output/DumperFactory
ASTORE 6
ALOAD 0
GETFIELD org/benf/cfr/reader/CfrDriverImpl.options : Lorg/benf/cfr/reader/util/getopt/Options;
GETSTATIC org/benf/cfr/reader/util/getopt/OptionsImpl.ANALYSE_AS : Lorg/benf/cfr/reader/util/getopt/PermittedOptionProvider$Argument;
INVOKEINTERFACE org/benf/cfr/reader/util/getopt/Options.getOption (Lorg/benf/cfr/reader/util/getopt/PermittedOptionProvider$ArgumentParam;)Ljava/lang/Object; (itf)
CHECKCAST org/benf/cfr/reader/util/AnalysisType
ASTORE 7
ALOAD 7
IFNULL L6
ALOAD 7
GETSTATIC org/benf/cfr/reader/util/AnalysisType.DETECT : Lorg/benf/cfr/reader/util/AnalysisType;
IF_ACMPNE L7
L6
FRAME APPEND [org/benf/cfr/reader/util/output/DumperFactory org/benf/cfr/reader/util/AnalysisType]
ALOAD 5
ALOAD 4
INVOKEVIRTUAL org/benf/cfr/reader/state/DCCommonState.detectClsJar (Ljava/lang/String;)Lorg/benf/cfr/reader/util/AnalysisType;
ASTORE 7
L7
FRAME SAME
ALOAD 7
GETSTATIC org/benf/cfr/reader/util/AnalysisType.JAR : Lorg/benf/cfr/reader/util/AnalysisType;
IF_ACMPEQ L8
ALOAD 7
GETSTATIC org/benf/cfr/reader/util/AnalysisType.WAR : Lorg/benf/cfr/reader/util/AnalysisType;
IF_ACMPNE L9
L8
FRAME SAME
ALOAD 5
ALOAD 4
ALOAD 6
INVOKESTATIC org/benf/cfr/reader/Driver.doJar (Lorg/benf/cfr/reader/state/DCCommonState;Ljava/lang/String;Lorg/benf/cfr/reader/util/output/DumperFactory;)V
GOTO L10
L9
FRAME SAME
ALOAD 7
GETSTATIC org/benf/cfr/reader/util/AnalysisType.CLASS : Lorg/benf/cfr/reader/util/AnalysisType;
IF_ACMPNE L10
ALOAD 5
ALOAD 4
ILOAD 2
ALOAD 6
INVOKESTATIC org/benf/cfr/reader/Driver.doClass (Lorg/benf/cfr/reader/state/DCCommonState;Ljava/lang/String;ZLorg/benf/cfr/reader/util/output/DumperFactory;)V
L10
FRAME FULL [org/benf/cfr/reader/CfrDriverImpl java/util/List I java/util/Iterator] []
GOTO L2
L3
FRAME CHOP 1
RETURN
MAXSTACK = 4
MAXLOCALS = 8
}