libvex 0.1.1

High-level bindings for valgrind's LibVEX.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use libvex_macros::{import_hwcaps, import_offsets};

pub struct State(pub vex_sys::VexGuestX86State);

impl Default for State {
    fn default() -> Self {
        let mut this = std::mem::MaybeUninit::uninit();
        Self(unsafe {
            vex_sys::LibVEX_GuestX86_initialise(this.as_mut_ptr());
            this.assume_init()
        })
    }
}

import_offsets! { x86 => { EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP, EIP, CS, DS, ES, FS, GS, SS } }

import_hwcaps! { x86 => { LZCNT, MMXEXT, SSE1, SSE2, SSE3 } }