#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub struct NativePtr {
pub addr: u32,
pub offset: u8,
pub addrspace: miden_assembly_syntax::ast::types::AddressSpace,
}
impl NativePtr {
pub fn new(addr: u32, offset: u8) -> Self {
Self {
addr,
offset,
addrspace: Default::default(),
}
}
pub fn from_ptr(addr: u32) -> Self {
let eaddr = addr / 4;
let offset = (addr % 4) as u8;
Self {
addr: eaddr,
offset,
addrspace: Default::default(),
}
}
pub const fn is_word_aligned(&self) -> bool {
self.offset == 0 && self.addr.is_multiple_of(4)
}
pub const fn is_element_aligned(&self) -> bool {
self.offset == 0
}
}