10个版本 (5个重大更新)
0.6.0+xed-2024.05.20 | 2024年6月1日 |
---|---|
0.5.1+xed-2023.12.19 | 2024年6月1日 |
0.5.0+xed-2023.12.19 | 2024年1月17日 |
0.4.0 | 2021年6月26日 |
0.1.1 | 2017年10月8日 |
#500 in 编码
每月91次下载
用于 rusty-xed
4MB
81K SLoC
xed-sys
Rust对Intel XED的FFI绑定。
/// 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);
}
}
}
构建
为了构建此crate,你需要
- Python版本3.8或更高版本(构建XED)。
- C编译器。
如果你启用了bindgen
特性,则还需要
- clang 运行bindgen。
示例
你可以在examples/目录中找到使用示例。
这些示例旨在使用cargo执行。例如,要运行名为xed_min
的示例
# cd to the crate's root directory
cargo run --example xed_min