arromanoff/llvm-bleach

GitHub: arromanoff/llvm-bleach

一个高度可配置的 LLVM MIR 到 LLVM IR 提升工具,通过配置文件驱动实现多架构支持而无需修改源码。

Stars: 6 | Forks: 0

# llvm-bleach llvm-bleach 是一个将 LLVM MIR 文件提升为 LLVM IR 的工具。bleach 的主要特点是该工具本身内部没有任何 backend。它仅使用与平台无关的 LLVM MC 库信息和输入配置文件(可由用户修改)。目前,bleach 附带了 RISC-V 指令子集(带 M 扩展的 rv32/64)的配置文件。要向 llvm-bleach 添加任何其他架构,只需编写一个描述目标平台指令的配置文件即可。无需修改源代码。 ## 构建 你可以使用 [nix](https://nixos.org/download/) 轻松构建 bleach: ``` nix build . ``` 并运行: ``` # 生成 config file(可选) result/bin/bleach-config-gen --march rv64imdf --template-dir result/share/templates -o newconfig.yaml # 使用生成的 config file 运行 bleach result/bin/llvm-bleach path/to/program.mir --instructions=newconfig.yaml ``` ## 开发者构建 ### 获取构建所需的所有依赖 你可以使用 [nix](https://nixos.org/download/) 获取所有必需的依赖 ``` nix develop . ``` ### 构建 ``` cmake -S . -B build cmake --build build ``` ### 指南 llvm-bleach 目前附带了所有 3 个分发工具的文档: - [llvm-bleach](./docs/bleach.md) - LLVM MIR 到 LLVM IR 的提升器 - [mctomir](./docs/mctomir.md) - 机器码到 MIR 的提升器 - [bleach-config-gen](./docs/bleach-config-gen.md) - 辅助工具,用于从可用模板生成 llvm-bleach 的架构配置。 ### 平台支持 #### RISC-V 目前 llvm-bleach 支持 I 配置的 rv64/rv32 基础指令集。 支持的扩展包括: - M - 整数乘法和除法 - F - 单精度浮点运算 - D - 双精度浮点运算
标签:Bash脚本, LLVM, RISC-V, 中间表示, 云资产清单, 编译器工具, 逆向工程