vicis icon indicating copy to clipboard operation
vicis copied to clipboard

Manipulate LLVM-IR in Pure Rust

Vicis

CI codecov discussions

Manipulate LLVM IR in pure Rust (without LLVM).

Feel free to create issues and pull requests!

Requirements

  • Vicis itself is not depending on llvm
    • However, I sometimes use llvm 13 for testing. (e.g. parsing the llvm-ir clang-13 emitted by vicis)

Examples

  • Parse and dump *.ll file
cargo run --example parse FILE.ll
  • Interpret *.ll file
cargo run --example interpreter FILE.ll # --release
  • Iterate over instructions

  • Compile LLVM IR into machine code

    • The example illustrates the way for x86_64, but it's easy to do the same thing for aarch64 (although aarch64 backend is still heavily under development.)