diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.rs | 30 | 
1 files changed, 16 insertions, 14 deletions
| diff --git a/src/main.rs b/src/main.rs index 3a9fef4..b59ebb2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,36 +1,37 @@ -use yaxpeax_arch::{Address, Arch, Decoder, Instruction, LengthedInstruction}; +use yaxpeax_arch::{AddressBase, Arch, Decoder, Instruction, LengthedInstruction}; -use clap::{Arg, App}; +use clap::*;  use num_traits::identities::Zero;  use std::fmt;  fn main() { -    let matches = App::new("yaxpeax disassembler") -        .version("0.0.1") -        .author("iximeow <me@iximeow.net>") -        .about("disassembly tool using yaxpeax decoders") +    let _ = include_str!("../Cargo.toml"); +    let app = app_from_crate!()          .arg(Arg::with_name("arch")               .short("a") -             .long("architecture") +             .long("--architecture")               .takes_value(true) -             .help("architecture to disassemble input as")) +             .possible_values(&["x86_64", "armv7", "armv8", "mips", "msp430", "pic17", "pic18", "m16c"]) +             .help("architecture to disassemble input as.")) +        /*          .arg(Arg::with_name("file")               .short("f")               .long("file")               .takes_value(true)               .help("file of bytes to decode")) +             */          .arg(Arg::with_name("verbose")               .short("v") -             .long("verbose") +             .long("--verbose")               .help("increased detail when decoding instructions"))          .arg(Arg::with_name("data") -             .index(1)) -        .get_matches(); +             .required(true) +             .help("hex bytes to decode by the selected architecture. for example, try -a x86_64 33c0c3")); + +    let matches = app.get_matches();      let arch_str = matches.value_of("arch").unwrap_or("x86_64"); -    eprintln!("disassembling as {}", arch_str); -//    let file = matches.value_of("file").unwrap();      let buf: &str = matches.value_of("data").unwrap_or("");      let verbose = matches.occurrences_of("verbose") > 0; @@ -39,9 +40,10 @@ fn main() {          "armv7" => decode_input::<yaxpeax_arm::armv7::ARMv7>(buf, verbose),          "armv8" => decode_input::<yaxpeax_arm::armv8::a64::ARMv8>(buf, verbose),          "mips" => decode_input::<yaxpeax_mips::MIPS>(buf, verbose), -        "msp430" => decode_input::<yaxpeax_msp430_mc::MSP430>(buf, verbose), +        "msp430" => decode_input::<yaxpeax_msp430::MSP430>(buf, verbose),          "pic17" => decode_input::<yaxpeax_pic17::PIC17>(buf, verbose),          "pic18" => decode_input::<yaxpeax_pic18::PIC18>(buf, verbose), +        "m16c" => decode_input::<yaxpeax_m16c::M16C>(buf, verbose),  //        "pic24" => decode_input::<yaxpeax_pic24::PIC24>(buf),          other => {              println!("unsupported architecture: {}", other); | 
