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, 中间表示, 云资产清单, 编译器工具, 逆向工程