#evm

evmasm

evmasm converts between evm bytecode and text

3 releases

Uses old Rust 2015

0.1.3 Aug 23, 2017
0.1.2 Aug 4, 2017
0.1.1 Jul 31, 2017
0.1.0 Jul 31, 2017

#123 in #evm

Download history 7/week @ 2023-06-08 12/week @ 2023-06-15 11/week @ 2023-06-22 9/week @ 2023-06-29 8/week @ 2023-07-06 13/week @ 2023-07-13 8/week @ 2023-07-20 8/week @ 2023-07-27 15/week @ 2023-08-03 9/week @ 2023-08-10 15/week @ 2023-08-17 24/week @ 2023-08-24 11/week @ 2023-08-31 13/week @ 2023-09-07 10/week @ 2023-09-14 17/week @ 2023-09-21

53 downloads per month

MIT license

15KB
319 lines

evmasm

The evmasm crate aims to provide a simple interface for the conversion between evm bytecode and it's human readable form.

extern crate evmasm;
use evmasm::{BYTE_INST, instruction, arguments_size};

fn main() {
    for (&bc, _) in BYTE_INST.iter() {
        let inst = instruction(bc).ok().unwrap();
        println!("0x{:2x} - {} - needs {} bytes of arguments",
                 bc,
                 inst,
                 arguments_size(bc).ok().unwrap());
    }
}

lib.rs:

The evmasm crate aims to provide a simple interface for the conversion between evm bytecode and it's human readable form.

extern crate evmasm;
use evmasm::{assemble, disassemble};

fn main() {
    let bytecode = assemble("PUSH1 2 PUSH1 1 ADD").unwrap();
    println!("{:?}", bytecode);
    let code = disassemble(&bytecode).unwrap();
    for ln in code {
        println!("{}", ln);
    }
}
extern crate evmasm;
use evmasm::{BYTE_INST, instruction, arguments_size};

fn main() {
    for (&bc, _) in BYTE_INST.iter() {
        let inst = instruction(bc).ok().unwrap();
        println!("0x{:2x} - {} - needs {} bytes of arguments",
                 bc,
                 inst,
                 arguments_size(bc).ok().unwrap());
    }
}

Dependencies

~280KB