Coding Global Background
Coding Global

[YABR] A Bidirectional (de)compiler (Java)

java
Archiviert 2 months ago
coding1
0 Nachrichten
1 Mitglieder
Erstellt 2 months ago
Aktualisiert 2 months ago
In Discord öffnen
T
TonicBox

Spielt Custom Status

Verified
https://github.com/Tonic-Box/YABR

This has been my pet project for quite some time now and would love any feedback. YABR is a java bytecode reader/writer (similar to asm), with full support up to JVM 11 spec.

It features a built in custom SSA-form IR capable of both lifting from and lowering back to bytecode, an AST source-alike mutable API built on top of that API also capable of lowering back to the IR/bytecode, and can emit source (decompile).

Bytecode <-> IR <-> AST -> source (Mutable at every level)

From the readme:
Features
• Class file parsing - Read and write Java .class files• Bytecode manipulation - High-level and low-level APIs for modifying bytecode• SSA IR system - Lift bytecode to SSA form, optimize, and lower back• Source AST system - Recover, mutate, and emit Java source from bytecode• Class decompilation - Full class decompilation with imports, fields, and methods• Visitor patterns - Traverse classes at multiple abstraction levels• Frame computation - Automatic StackMapTable generation for Java 7+
Currently as far as IR optimization passes go, I have more than a handful written

The readme is pretty fleshed out and can offer more specifics on the project, faculties, and capabilities. Would love any feedback or thoughts. Its been a fantastic learning experience, currently I'm focusing on writing/improving my optimization transformers and source emission output.