#汇编 #llvm-ir #cargo #cargo-subcommand #生成的 #优化 #显示

app cargo-asm

一个显示 Rust 源代码生成的汇编的 cargo 子命令

17 个版本

使用旧的 Rust 2015

0.1.16 2018 年 6 月 7 日
0.1.15 2018 年 6 月 7 日
0.1.14 2018 年 5 月 24 日
0.1.13 2018 年 4 月 10 日
0.1.10 2018 年 2 月 27 日

#295Cargo 插件

Download history 189/week @ 2024-03-13 151/week @ 2024-03-20 152/week @ 2024-03-27 166/week @ 2024-04-03 268/week @ 2024-04-10 152/week @ 2024-04-17 194/week @ 2024-04-24 153/week @ 2024-05-01 283/week @ 2024-05-08 178/week @ 2024-05-15 161/week @ 2024-05-22 149/week @ 2024-05-29 160/week @ 2024-06-05 140/week @ 2024-06-12 177/week @ 2024-06-19 137/week @ 2024-06-26

644 每月下载量

MIT/Apache

89KB
2K SLoC

cargo-asm

crates.io version Travis build status Appveyor build status License

一个 cargo 子命令,显示为 Rust 源代码生成的汇编或 llvm-ir。

安装

cargo install cargo-asm

示例

要查看 crate lib_crate 中模块 bar 的函数 double_n 的汇编,并带有其对应的 Rust 代码,请转到 crate 的根目录

git clone [email protected]:gnzlbg/cargo-asm.git
cd cargo-asm/cargo-asm-test/lib_crate

并输入

cargo asm lib_crate::bar::double_n --rust

输出

screenshot

(注意:在优化后,rustc 发出的源代码映射信息有时并不完美,例如在这个例子中。请谨慎对待。)

要查看 LLVM IR 类型

cargo llvm-ir lib_crate::bar::double_n

功能

  • 平台支持

    • OS:Linux、Windows 和 MacOSX。
    • Rust:nightly 和 stable。
    • 架构:x86、x86_64、arm、aarch64、powerpc、mips、sparc。
  • 显示

    • Intel 或 AT&T 语法中的汇编。
    • 与汇编对应的 Rust 源代码。
    • JSON AST 以供进一步处理。
    • LLVM-IR。
  • 查询

    • 函数,例如:foo
    cargo asm crate::path::to::foo
    
    • 固有方法,例如:类型 Foofoo (即 Foo::foo)
    cargo asm crate::path::to::Foo::foo
    
    • 特质的实现方法,例如:类型 Foo 的特质 Barbar
    cargo asm "<crate::path::to::Foo as crate::path::to::Bar>::bar"
    
    • 泛型函数、方法等。

要在一个路径中搜索名为 foo 的函数,可以只输入 cargo asm foo。该命令将返回所有同名函数的列表,而不考虑路径。

许可证

本项目许可协议为以下之一

任选其一。

贡献

除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交包含在此项目中的任何贡献,将采用上述双重许可方式,不附加任何额外条款或条件。

依赖项

~3–12MB
~113K SLoC