Trait yaxpeax_core::data::ValueLocations [−][src]
pub trait ValueLocations: Arch {
type Location: Debug + Hash + Eq + Serialize + for<'de> Deserialize<'de> + Clone + AliasInfo;
fn decompose(
op: &Self::Instruction
) -> Vec<(Option<Self::Location>, Direction)>;
}
Expand description
ValueLocations
allows decomposition of an instruction into a series of locations and an
indication of them being read or written. this defines the data flow relation between
instructions and all locations in programs.
NOTE: ValueLocations
is deprecated in favor of LocIterator
.
implementation guidance: for correctness, decompose
must express the most conservative
locations. as an example, x86_64 “push” should not be defined to use a stack-specific location
ValueLocations::decompose
should simply specify memory access, and allow aDisambiguator
with appropriate assumptions to refine the memory access into something appropriate for analysis.