Crates.io | xed-sys |
lib.rs | xed-sys |
version | 0.6.0+xed-2024.05.20 |
source | src |
created_at | 2017-10-08 21:12:17.426601 |
updated_at | 2024-06-01 22:35:39.671772 |
description | Rust FFI bindings for Intel XED. |
homepage | |
repository | https://github.com/rust-xed/xed-sys |
max_upload_size | |
id | 34917 |
size | 13,368,087 |
Rust FFI bindings for Intel XED.
/// Similar to `examples/xed-min.c` from official Intel XED repository.
use xed_sys::*;
fn main() {
unsafe {
let (mmode, stack_addr_width) = (XED_MACHINE_MODE_LEGACY_32, XED_ADDRESS_WIDTH_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);
}
}
}
In order to build this crate, you need:
If you have the bindgen
feature enabled then you will also need:
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