3 个版本 (破坏性更新)
0.3.0 | 2024 年 4 月 19 日 |
---|---|
0.2.0 | 2024 年 3 月 1 日 |
0.1.0 | 2024 年 2 月 28 日 |
#1098 in 解析器实现
150KB
3.5K SLoC
rjvm
rjvm
是一个 Rust 库,它允许解析 JVM 类文件。此库支持 Java 至少到 Java SE 21。 该库的目的是解析和写入(未来)JVM 类文件,而不是创建 JVM。
入门指南
要将 rjvm
集成到您的项目中,只需将其添加到您的 Cargo.toml
文件中的依赖项即可。
[dependencies]
rjvm = "0.1.0"
要解析类文件,请按照以下步骤操作
- 将类文件读入字节数组
- 从字节数组创建一个
BufferedReader
- 初始化一个可变的
ConstantPool
以存储常量池条目 - 使用
ClassFile::decode
方法解析 ClassFile。
let file = include_bytes!("../path/to/your/class/file.class");
let mut buffer = rjvm::decoder::BufferedReader::new(file);
let mut constant_pool = rjvm::types::constants::ConstantPool::new();
let class_file = rjvm::types::elements::ClassFile::decode(&mut buffer, &mut constant_pool);
示例
在此存储库的 examples
目录中可以找到一些如何使用 rjvm
的简单示例。
decoding.rs
: 展示了解析类文件的示例。instructions.rs
: 展示了解析类文件并打印所有方法及其指令的示例。
路线图
- 解析包含所有相关元素的字节码文件
- 管理常量池
- 读取 JAR 文件
- 写入类文件
依赖项
~105KB