Bap_c_dataC Data model.
This module defines abstractions for C values.
A value is backed by a datum - a sequence of bits that represents the value. This module also defines models for integer representation.
The following table summarize all models of integer representation.
LP32 ILP32 ILP64 LLP64 LP64 char 8 8 8 8 8 short 16 16 16 16 16 int 16 32 64 32 32 long 32 32 64 32 64 addr 32 32 64 64 64
type value = | Topany possible value
*)| Set of Bap.Std.word listone of the specified, Set [] is bot
A value lattice.
val bin_size_value : value Core_kernel.Bin_prot.Size.sizerval bin_write_value : value Core_kernel.Bin_prot.Write.writerval bin_writer_value : value Core_kernel.Bin_prot.Type_class.writerval bin_read_value : value Core_kernel.Bin_prot.Read.readerval __bin_read_value__ : (int -> value) Core_kernel.Bin_prot.Read.readerval bin_reader_value : value Core_kernel.Bin_prot.Type_class.readerval bin_value : value Core_kernel.Bin_prot.Type_class.tval sexp_of_value : value -> Ppx_sexp_conv_lib.Sexp.tval value_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> valuetype 'd obj = | Basic of Bap_c_type.basicA value of a basic type
*)| Field of string * 'dA struct or union field
*)| UndefUndefined data (padding or code)
*)| Union of 'd listUnion of values
*)A C Object representation.
The type is parameterized with the object layout representation to enable the recursive definition of the generalized layout type.
val bin_size_obj :
'd Core_kernel.Bin_prot.Size.sizer ->
'd obj Core_kernel.Bin_prot.Size.sizerval bin_write_obj :
'd Core_kernel.Bin_prot.Write.writer ->
'd obj Core_kernel.Bin_prot.Write.writerval bin_writer_obj :
'd Core_kernel.Bin_prot.Type_class.writer ->
'd obj Core_kernel.Bin_prot.Type_class.writerval bin_read_obj :
'd Core_kernel.Bin_prot.Read.reader ->
'd obj Core_kernel.Bin_prot.Read.readerval __bin_read_obj__ :
'd Core_kernel.Bin_prot.Read.reader ->
(int -> 'd obj) Core_kernel.Bin_prot.Read.readerval bin_reader_obj :
'd Core_kernel.Bin_prot.Type_class.reader ->
'd obj Core_kernel.Bin_prot.Type_class.readerval bin_obj :
'd Core_kernel.Bin_prot.Type_class.t ->
'd obj Core_kernel.Bin_prot.Type_class.tval sexp_of_obj :
('d -> Ppx_sexp_conv_lib.Sexp.t) ->
'd obj ->
Ppx_sexp_conv_lib.Sexp.tval obj_of_sexp :
(Ppx_sexp_conv_lib.Sexp.t -> 'd) ->
Ppx_sexp_conv_lib.Sexp.t ->
'd objabstraction of a С datum.
The datum is a sequence of bits that represents a C object. We abstract datum as either an immediate value of the given size, or a sequence of data, or a pointer to a datum.
val bin_size_datum :
'd Core_kernel.Bin_prot.Size.sizer ->
's Core_kernel.Bin_prot.Size.sizer ->
('d, 's) datum Core_kernel.Bin_prot.Size.sizerval bin_write_datum :
'd Core_kernel.Bin_prot.Write.writer ->
's Core_kernel.Bin_prot.Write.writer ->
('d, 's) datum Core_kernel.Bin_prot.Write.writerval bin_writer_datum :
'd Core_kernel.Bin_prot.Type_class.writer ->
's Core_kernel.Bin_prot.Type_class.writer ->
('d, 's) datum Core_kernel.Bin_prot.Type_class.writerval bin_read_datum :
'd Core_kernel.Bin_prot.Read.reader ->
's Core_kernel.Bin_prot.Read.reader ->
('d, 's) datum Core_kernel.Bin_prot.Read.readerval __bin_read_datum__ :
'd Core_kernel.Bin_prot.Read.reader ->
's Core_kernel.Bin_prot.Read.reader ->
(int -> ('d, 's) datum) Core_kernel.Bin_prot.Read.readerval bin_reader_datum :
'd Core_kernel.Bin_prot.Type_class.reader ->
's Core_kernel.Bin_prot.Type_class.reader ->
('d, 's) datum Core_kernel.Bin_prot.Type_class.readerval bin_datum :
'd Core_kernel.Bin_prot.Type_class.t ->
's Core_kernel.Bin_prot.Type_class.t ->
('d, 's) datum Core_kernel.Bin_prot.Type_class.tval sexp_of_datum :
('d -> Ppx_sexp_conv_lib.Sexp.t) ->
('s -> Ppx_sexp_conv_lib.Sexp.t) ->
('d, 's) datum ->
Ppx_sexp_conv_lib.Sexp.tval datum_of_sexp :
(Ppx_sexp_conv_lib.Sexp.t -> 'd) ->
(Ppx_sexp_conv_lib.Sexp.t -> 's) ->
Ppx_sexp_conv_lib.Sexp.t ->
('d, 's) datumval bin_size_layout : layout Core_kernel.Bin_prot.Size.sizerval bin_write_layout : layout Core_kernel.Bin_prot.Write.writerval bin_writer_layout : layout Core_kernel.Bin_prot.Type_class.writerval bin_read_layout : layout Core_kernel.Bin_prot.Read.readerval __bin_read_layout__ : (int -> layout) Core_kernel.Bin_prot.Read.readerval bin_reader_layout : layout Core_kernel.Bin_prot.Type_class.readerval bin_layout : layout Core_kernel.Bin_prot.Type_class.tval sexp_of_layout : layout -> Ppx_sexp_conv_lib.Sexp.tval layout_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> layouttype t = (value, Bap.Std.Size.t) datumThe datum that uses value lattice for object representation.
include Core_kernel.Bin_prot.Binable.S with type t := tval bin_size_t : t Bin_prot.Size.sizerval bin_write_t : t Bin_prot.Write.writerval bin_read_t : t Bin_prot.Read.readerval __bin_read_t__ : (int -> t) Bin_prot.Read.readerval bin_writer_t : t Bin_prot.Type_class.writerval bin_reader_t : t Bin_prot.Type_class.readerval bin_t : t Bin_prot.Type_class.tval pp : Stdlib.Format.formatter -> t -> unitpp ppf datum prints the datum in a human-readable form.
val pp_layout : Stdlib.Format.formatter -> layout -> unitpp_layout ppf layout outputs layout in a human-readable form.