Build Status Build status Crates.io

xed-sys

Rust FFI bindings for Intel XED.

``rust /// Similar toexamples/xed-min.c` from official Intel XED repository. use xedsys::xedinterface::*;

fn main() { unsafe { let (mmode, stackaddrwidth) = (XEDMACHINEMODELEGACY32, XEDADDRESSWIDTH_32b);

    xed_tables_init();

    let itext: [u8; 15] = [
        0xf, 0x85, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    ];

    for bytes in 0..16 {
        let mut xedd = ::std::mem::MaybeUninit::<xed_decoded_inst_t>::uninit();
        xed_decoded_inst_zero(xedd.as_mut_ptr());
        xed_decoded_inst_set_mode(xedd.as_mut_ptr(), mmode, stack_addr_width);

        let xed_error: xed_error_enum_t = xed_decode(xedd.as_mut_ptr(), itext.as_ptr(), bytes);
        let desc = std::ffi::CStr::from_ptr(xed_error_enum_t2str(xed_error)).to_string_lossy();
        println!("bytes={} error={}", bytes, desc);
    }
}

} ```

Building

In order to build this crate, you need: * Python version 2.7, 3.4 or later (to build XED). * clang (to build XED and run bindgen).

Examples

You can find usage examples in the examples/ directory.

These examples are meant to be executed with cargo. For instance, to run the example named xed_min:

```

cd to the crate's root directory

cargo run --example xed_min ```