Cargo asm
cargo subcommand showing the assembly or llvm-ir generated for Rust code
[![crates.io version][crate-shield]][crate] [![Travis build status][travis-shield]][travis] [![Appveyor build status][appveyor-shield]][appveyor] [![License][license-shield]][license] The project is written primarily in Rust, distributed under the Other license, first published in 2018. It has gained significant community traction with 1,288 stars and 37 forks on GitHub. Key topics include: cargo-subcommand.
cargo-asm
A
cargosubcommand that displays the assembly or llvm-ir generated for Rust source code.
Install
cargo install cargo-asm
Example
To view the assembly of the function double_n in the module bar of the crate
lib_crate annotated with its corresponding Rust code, go to the crate's root
directory
git clone git@github.com:gnzlbg/cargo-asm.git
cd cargo-asm/cargo-asm-test/lib_crate
and type:
cargo asm lib_crate::bar::double_n --rust
which outputs:

(note: the source-code mapping information emitted by rustc after optimizations is
sometimes far from perfect, like in this case. Take it with a grain of salt.)
To view the LLVM IR type
cargo llvm-ir lib_crate::bar::double_n
Features
-
Platform support:
- OS: Linux, Windows, and MacOSX.
- Rust: nightly and stable.
- Architectures: x86, x86_64, arm, aarch64, powerpc, mips, sparc.
-
Displaying:
- Assembly in Intel or AT&T syntax.
- Corresponding Rust source code alongside assembly.
- JSON AST for further processing.
- LLVM-IR.
-
Querying:
- functions, for example:
foo:
cargo asm crate::path::to::foo- inherent method, for example:
fooof a typeFoo(that is,Foo::foo):
cargo asm crate::path::to::Foo::foo- trait method implementations, for example:
barof the traitBarfor the typeFoo:
cargo asm "<crate::path::to::Foo as crate::path::to::Bar>::bar"- generic functions, methods, ...
- functions, for example:
To search for a function named foo in some path, one can just type cargo asm foo. The command will return a list of all similarly named functions
independently of the path.
License
This project is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in this project by you, as defined in the Apache-2.0 license,
shall be dual licensed as above, without any additional terms or conditions.
Contributors
Showing top 9 contributors by commit count.
