• Stars
    star
    1,045
  • Rank 44,098 (Top 0.9 %)
  • Language
    Rust
  • License
    Other
  • Created almost 7 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

cargo subcommand showing the assembly or llvm-ir generated for Rust code

cargo-asm

crates.io version Travis build status Appveyor build status License

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:

screenshot

(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 type Foo (that is, Foo::foo):
    cargo asm crate::path::to::Foo::foo
    
    • trait method implementations, for example: bar of the trait Bar for the type Foo:
    cargo asm "<crate::path::to::Foo as crate::path::to::Bar>::bar"
    
    • generic functions, methods, ...

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

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.

More Repositories

1

jemallocator

Rust allocator using jemalloc as a backend
Rust
378
star
2

static_vector

A dynamically-resizable vector with fixed capacity and embedded storage
C++
156
star
3

slice_deque

A contiguous-in-memory double-ended queue that derefs into a slice
Rust
142
star
4

ctest

Automatic testing of FFI bindings for Rust
Rust
125
star
5

scattered

C++ Scattered Containers
C++
61
star
6

mimallocator

Rust
54
star
7

bitwise

Portable high-level bitwise manipulation algorithms
Rust
46
star
8

bitintr

Portable Bitwise Manipulation Intrinsics
Rust
36
star
9

cpp_skeleton

C++ Projekt Skeleton
CMake
19
star
10

is_sorted

Is an Iterator sorted?
Rust
18
star
11

nmp

Non-blocking message passing (a C++14 MPI wrapper)
C++
18
star
12

lbm-rs

Lattice-Boltzmann Method implementation in Rust
Rust
14
star
13

ndtree

nd-tree data structures and algorithms
C++
14
star
14

sleef-sys

Rust binding for SLEEF: SIMD Library for Evaluating Elementary Functions
Rust
12
star
15

aobench

Ambient Occlusion Benchmark in Rust (multi-threaded and explicitly vectorized)
C++
9
star
16

match_cfg

Convenience macro for defining items depending on large number of #[cfg]s
Rust
8
star
17

hm3

Hierarchical Multiphysics Multiscale methods
C++
7
star
18

simple-executor

A simple async executor for learning purposes
Rust
5
star
19

arithmetic_type

Implementation of an arithmetic type in C++
C++
5
star
20

cffi-panic

Error handling in Rust->C->Rust for C APIs taking callbacks
Rust
4
star
21

glfw

GLFW C++ wrapper with SFML-like event polling.
C++
4
star
22

hom3

A laboratory for High-Order Multiphysics Multiscale Methods
C++
3
star
23

is_utf8

Functions for ASCII and UTF-8 validation for byte slices
Rust
3
star
24

ampi

Asynchronous Message Passing Interface
Rust
3
star
25

tsc

Time stamp counter based timer
Rust
2
star
26

glibm

A pure Rust math library
Rust
2
star
27

linux-rs

Raw FFI Bindings to the Linux kernel APIs
Shell
1
star
28

typed_arch

Portably-typed std::arch intrinsics
Rust
1
star
29

toys

Toy projects
C++
1
star
30

stdsimd_portable

experimenting with building portable simd intrinsics on top of stdsimd
Rust
1
star