package bap-std
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=63ada71fa4f602bd679174dc6bf780d54aeded40ad4ec20d256df15886e3d2d5
md5=b8b1aff8c6846f2213eafc54de07b304
doc/bap/Bap/Std/Memmap/index.html
Module Std.Memmap
Memory maps. Memory map is an assosiative data structure that maps memory regions to values. Unlike in the Table, memory regions in the Memmap can intersect in an arbitrary ways. This data structure is also known as an Interval Tree.
Memmap is an instance of the Interval_tree with the Memory serving as an interval.
type 'a t = 'a memmapmemory map, aka interval trees
val sexp_of_t :
('a -> Ppx_sexp_conv_lib.Sexp.t) ->
'a t ->
Ppx_sexp_conv_lib.Sexp.tval empty : 'a tempty map
add map mem tag adds a new memory region mem tagged with tag. If the same region was already in the map it will be tagged with the tag again, even if it has had the same tag.
dominators map mem an ordered sequence of all memory regions, containing mem. A memory region (x,y) contains region (p,q), iff p >= x && q <= y, where memory regions are depicted using closed intervals.
intersections map mem an ordered sequence of all memory regions, that intersects with mem. Memory region (x,y) intersects with region (p,q) iff there exists such z that
z >= p || z <= q && z >= x && z <= y.
In other words if there exists such byte that belongs to both memory regions.
intersects map mem is true if intersections map mem is not empty
contains map addr true if there exists such memory region mem, that Memory.contains mem addr
lookup map addr returns an ordered sequence of all memory containing the addr
map m f returns a new map with each tag mapped with function f
mapi m f the same as map, but f is called with two arguments: mem and tag, where mem is a memory region, and tag is a tag associated with that region.
filter map f returns a map that contains only those elements for which f evaluated to true
filter_map m f creates a new map by applying a function f to each tag. If f returns Some x then this region will be mapped to x in a new map, otherwise it will be dropped.
filter_mapi is like filter_map but use function also accepts would associated memory region
remove_intersections map mem removes all bindings that that intersects with mem
remove_dominators map mem removes all bindings that are dominators to mem
to_sequence map converts the memmap 'a t to a sequence of key-value pairs
include Core_kernel.Container.S1 with type 'a t := 'a t
val mem : 'a t -> 'a -> equal:('a -> 'a -> bool) -> boolval length : 'a t -> intval is_empty : 'a t -> boolval iter : 'a t -> f:('a -> unit) -> unitval fold : 'a t -> init:'accum -> f:('accum -> 'a -> 'accum) -> 'accumval fold_result :
'a t ->
init:'accum ->
f:('accum -> 'a -> ('accum, 'e) Base__.Result.t) ->
('accum, 'e) Base__.Result.tval fold_until :
'a t ->
init:'accum ->
f:('accum -> 'a -> ('accum, 'final) Base__.Container_intf.Continue_or_stop.t) ->
finish:('accum -> 'final) ->
'finalval exists : 'a t -> f:('a -> bool) -> boolval for_all : 'a t -> f:('a -> bool) -> boolval count : 'a t -> f:('a -> bool) -> intval sum :
(module Base__.Container_intf.Summable with type t = 'sum) ->
'a t ->
f:('a -> 'sum) ->
'sumval find : 'a t -> f:('a -> bool) -> 'a optionval find_map : 'a t -> f:('a -> 'b option) -> 'b optionval to_list : 'a t -> 'a listval to_array : 'a t -> 'a arrayval min_elt : 'a t -> compare:('a -> 'a -> int) -> 'a optionval max_elt : 'a t -> compare:('a -> 'a -> int) -> 'a optionval pp : (Format.formatter -> 'a -> unit) -> Format.formatter -> 'a t -> unitpp pp_elem constracts a printer for a memmap to the given element.