#binary #asm #macro #proc-macro

macro bingen

将编译时编译的汇编代码作为二进制切片的进程宏

4 个版本 (2 个破坏性更新)

0.3.1 2021年10月10日
0.3.0 2021年10月10日
0.2.0 2021年10月4日
0.1.0 2021年10月3日

#1273 in 进程宏

每月26次下载

MIT 许可证

8KB
170 代码行

bingen

将编译时编译的汇编代码作为二进制切片的进程宏。

[dependencies]
bingen = "0.3"
let bin = bingen!("aarch64-linux-eabi", "mrs x0, DBGDTR_EL0");
assert_eq!(bin, [0, 4, 51, 213]);

默认情况下,此crate会自动检测最新的llvm工具链安装。

如果您想使用其他llvm安装,请手动指定路径,如下所示

BINGEN_CLANG_PATH=/path/to/clang \
  BINGEN_OBJCOPY_PATH=/path/to/llvm-objcopy \
  cargo test

要了解默认使用的工具链,请运行以下命令

$ cargo test --lib tests::print_llvm_path -- --nocapture --ignored
    Finished test [unoptimized + debuginfo] target(s) in 0.02s
     Running unittests (target/debug/deps/bingen-4b08a2f2272400c9)

running 1 test
LLVMPath { clang: "/usr/bin/clang-8", llvm_objcopy: "/usr/bin/llvm-objcopy-8" }
test tests::print_llvm_path ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

依赖项

~3–11MB
~142K SLoC