cargo-asm
A
cargo
subcommand 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 [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
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:
foo
of a typeFoo
(that is,Foo::foo
):
cargo asm crate::path::to::Foo::foo
- trait method implementations, for example:
bar
of the traitBar
for 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.