ASM: Ausgabe von Java-Bytecode und Opcode

Ich versuche, ein Programm zu schreiben, das eine .class-Datei nimmt und alle Methoden der .class-Datei sowie den Inhalt jeder Methode sammelt. Hier ist mein Code

public class ClassReaderTest1 {

    public static void main(String[] args) throws Exception{
        InputStream in = new FileInputStream("*.class");
        ClassReader reader = new ClassReader(in);
        ClassNode classNode = new ClassNode();
        reader.accept(classNode,0);
        @SuppressWarnings("unchecked")
        final List<MethodNode> methods = classNode.methods;

        for(MethodNode m: methods){
             InsnList inList = m.instructions;
             System.out.println(m.name);
             for(int i = 0; i< inList.size(); i++){
                 System.out.println("     " +     Integer.toHexString(inList.get(i).getOpcode()));
             }
        }
    }
}

und hier ist meine Ausgabe

init>
     ffffffff
     ffffffff
     19
     b7
     b1
     ffffffff
main
     ffffffff
     ffffffff
     b2
     12
     b6
     ffffffff
     ffffffff
     3
     36
     ffffffff
     ffffffff
     b1
     ffffffff

Letztendlich möchte ich diese Werte nicht drucken, ich möchte sie nur in meinem Programm referenzieren können (ich versuche zu überprüfen, ob ich die richtigen Werte erhalte). Ich bekomme die Methoden wie erwartet, aber der Inhalt der Methoden macht für mich keinen Sinn. Soweit ich weiß, handelt es sich nicht um Opcodes. Insbesondere "fffffff" ist kein Java-Opcode. Was ich tun möchte, ist alle Methoden auszudrucken, wie ich oben getan habe und dann, wo ich jetzt die Opcodes habe, den Java-Bytecode, gefolgt von ein paar Leerzeichen und dann den Opcode auszudrucken. Zum Beispiel

main
    bytecode **
    .
    .

Die Datei, die ich in dieses Programm lade, besteht nur aus einer Hauptmethode, einer einzelnen println-Anweisung und einer Initialisierung einer int-Variablen.

Meine Frage ist dann, mache ich etwas falsch oder interpretiere ich meine Ergebnisse einfach nicht richtig? Wie kann ich den Bytecode erhalten? Ich habe keinen Weg gefunden, es zu bekommen. Ich kann es sehen, wenn ich das Java-Bytecode-Gliederungs-Plugin für Eclipse verwende, aber ich muss es in meinem Programm referenzieren können.

Danke im Voraus

Antworten auf die Frage(1)

Ihre Antwort auf die Frage