Coding Global Background
Coding Global
CodingGlobal

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

java
0 messages
1 members
11 days ago
T
TonicBox

Playing 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](https://github.com/Tonic-Box/YABR/blob/main/docs/ssa-transforms.md) 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.