Library
Module
Module type
Parameter
Class
Class type
Cbat_ai_memmap Represents memory as an interval tree from ranges of addresses to CLPs with an endianness. Note that, while BAP breaks up its memory into constant size (usually 8-bit) regions, this module does not. This is because n*k-bit CLPs cannot be well-represented as k n-bit CLPs. For example, take the set
which can be represented exactly as a 3-element CLP with a constant step of 0x17. If we divide it into two 4-bit sets, we get
for the lower bits and
for the upper ones. However, this latter set cannot be represented by a CLP since it has a variable step. The closest approximation is
. We then lose even more precision when attempting to read back an 8-bit word from these 4-bit cells. Since it is no longer clear which element from the low set corresponds to each element from the high set, the best a general algorithm can do is to guess the following set:
Again, this set cannot be represented accurately by a CLP. The best we can do is the interval 0x15,0x4e
which has cardinality 0x39 = 57, whereas our initial set had cardinality 3. Since fixed-size memory cells handle larger data so badly, this module attempts to keep data stored at the greatest bitwidth possible.
module WordSet = Cbat_clp_set_composite
module Key : sig ... end
module Val : sig ... end
include Bap.Std.Value.S with type t := t
val bin_t : t Core_kernel.Std.Bin_prot.Type_class.t
val bin_read_t : t Core_kernel.Std.Bin_prot.Read.reader
val __bin_read_t__ : (int -> t) Core_kernel.Std.Bin_prot.Read.reader
val bin_reader_t : t Core_kernel.Std.Bin_prot.Type_class.reader
val bin_size_t : t Core_kernel.Std.Bin_prot.Size.sizer
val bin_write_t : t Core_kernel.Std.Bin_prot.Write.writer
val bin_writer_t : t Core_kernel.Std.Bin_prot.Type_class.writer
val bin_shape_t : Core_kernel.Std.Bin_prot.Shape.t
val t_of_sexp : Sexplib.Sexp.t -> t
val sexp_of_t : t -> Sexplib.Sexp.t
val pp : Format.formatter -> t -> unit
include Cbat_map_lattice.S_indexed
with module Val := Val
and module Key := Key
and type t := t
and type idx := idx