Я пытаюсь использовать библиотеку ASM для чтения байт-кода и перевода его в другой формат. Начиная с простого тестового класса, содержащего этот метод:
public static double square(double a) {
return a * a;
}
, который компилируется в этот байт-код:
public static double square(double);
Code:
0: dload_0
1: dload_0
2: dmul
3: dreturn
, используя этот MethodVisitor для чтения кода:
return new MethodVisitor(ASM7) {
@Override
public void visitInsn(int opcode) {
System.out.println(String.format("%02x", opcode));
}
@Override
public void visitLdcInsn(Object value) {
System.out.println(value);
}
};
Я получаю следующий вывод:
6b
af
Это коды операций для dmul
и dreturn
соответственно, поэтому он обходит код, но не сообщает инструкции dload_0
, либо visitInsn
или visitLdcInsn
.
Что я делаю не так?