pub struct InterfaceSlot {
pub base: SlotBase,
pub offset: i64,
pub size: usize,
}Expand description
Where one materialized interface input is bound from, or one write-set output replayed to, at a call site that does not pass it explicitly.
This is the memory channel’s analogue of RegisterInterfaceMap’s bare
VarnodeId: a register input needs no descriptor beyond the register
itself, but a memory input has to say which address the caller reads. It
generalizes ExternSlot, which
describes the same thing for prototyped externals only.
Every slot is mem[base + offset] of size bytes: a memory input is, by
construction, a dereference. The interface says where, in terms the caller
can evaluate — never in terms of the callee’s body.
Deliberately non-recursive: a base that must itself be loaded is the
“re-dereference whose address is loaded at runtime” case the RAM channel
already rejects as unmodellable — such a base records
SlotBase::Unmappable rather than being described.
Fields§
§base: SlotBase§offset: i64§size: usizeImplementations§
Source§impl InterfaceSlot
impl InterfaceSlot
Sourcepub fn is_bindable(&self) -> bool
pub fn is_bindable(&self) -> bool
Whether this slot’s address is expressible at a call site at all.
A SlotBase::Arg slot additionally needs the site to actually pass
that argument; this reports only the address-independent half.
Trait Implementations§
Source§impl Clone for InterfaceSlot
impl Clone for InterfaceSlot
Source§fn clone(&self) -> InterfaceSlot
fn clone(&self) -> InterfaceSlot
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more