Skip to main content

Command Palette

Search for a command to run...

Java Dev 8 - Java Bytecode (ASM Framework)

Updated
2 min read
Java Dev 8 - Java Bytecode (ASM Framework)
S

Contact: phmclong@gmail.com

Type descriptor

Kiểu trong JavaType descriptor
booleanZ
charC
byteB
shortS
intI
floatF
longJ
doubleD
ObjectLjava/lang/Object;
int[][I
Object[][][[Ljava/lang/Object;

Method descriptor

Method ví dụMethod descriptor tương ứng
void m(int i, float f)(IF)V
int m(Object o)(Ljava/lang/Object;)I
int[] m(int i, String s)(ILjava/lang/String;)[I
Object m(int[] i)([I)Ljava/lang/Object;
Object m(String str)(Ljava/lang/String;)Ljava/lang/Object;
public Test(){…}Method descriptor là ()V, tên method là: <init> ( điều này tượng trưng cho việc đây là constructor)
static int m = 1;Tên method là: <clinit>

ClassReader

ClassReader là trình phân tích cú pháp (parser), nó tạo ra một ClassVisitor để truy cập cấu trúc ClassFile, ClassFile được định nghĩa trong Java Virtual Machine Specification - JVMS.

Xem thêm JVMS: https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html

ClassReader sẽ parse nội dung ClassFile và gọi các method truy cập thích hợp của một ClassVisitor nhất định cho từng field, method và bytecode mà nó gặp phải.

ClassVisitor

ClassVisitor là một trình truy cập (visitor) sẽ truy cập qua các class Java. Các method của class này phải được gọi theo thứ tự sau: visit [ visitSource ] [ visitModule ][ visitNestHost ][ visitOuterClass ] ( visitAnnotation | visitTypeAnnotation | visitAttribute )* ( visitNestMember | [ * visitPermittedSubclass ] | visitInnerClass | visitRecordComponent | visitField | visitMethod )* visitEnd.

38 views

More from this blog

Sheon

18 posts

  • Another blog: https://phmclong.github.io/myblog
  • Email: phmclong@gmail.com