libvex 0.1.1

High-level bindings for valgrind's LibVEX.
Documentation
use libvex_macros::{import_hwcaps, import_offsets};

pub struct State(pub vex_sys::VexGuestARM64State);

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

import_offsets! { arm64 => { PC, X0, X1, X2, X3, X4, X5, X6, X7, X8, XSP } }

import_hwcaps! {
    arm64 => { ATOMICS, BF16, DPBCVADP, DPBCVAP, FHM, FP16, I8MM, RDM, SHA3, SM3, SM4, VFP16 }
}