A
cargosubcommand that displays the assembly or llvm-ir generated for Rust source code.
cargo install cargo-asm
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 [email protected]: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
-
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.
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.
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.