class
MemAbstractBufferContents
This class represents a memory area where abstract expressions are stored. It enables to read/write any expression of size 8, 16, 32, or 64 bits.
For performance reasons, no checks are performed on the read/write operations to make sure that they don't overflow the bounds of the buffer. It is up to the caller to verify that the arguments passed are consistent.
Abstract expressions are stored in a hashmap <offset : (expr, byte_num)>.
- offset: is the offset in the buffer (the address)
- expr: expr is the expression written at address addr
- byte_num: is the number of the particular octet of 'expr' that is at address addr For example, assuming little endian, writing v1 = exprvar(32, "var1") at offset 0x100 gives:
- <0x100: (v1, 0)>
- <0x101: (v1, 1)>
- <0x102: (v1, 2)>
- <0x103: (v1, 3)>
For read operations, if the value read overlaps between two different expressions stored in memory, the class automatically concatenates/extracts the corresponding parts
❱ Base classes
- class Serializable
- Virtual interface that serializable classes must implement.
❱ Constructors, destructors, conversion operators
- MemAbstractBuffer()
- Constructor.
❱ Public functions
-
auto read(offset_
t off, unsigned int nb_bytes) -> Expr - Read 'nb_bytes' bytes as an abstract value from offset 'off'.
-
void write(offset_
t off, Expr val) - Write an abstract value at offset 'off'.
-
auto at(offset_
t off) -> std::pair<Expr, uint8_t>& - Return the abstract value pair stored at offset 'off'.
-
void set(offset_
t off, std::pair<Expr, uint8_t>& pair) - Set the abstract value pair at offset 'off'.
- auto class_uid() const -> uid_t virtual
- Return the class uid (see ClassId enum)
-
void dump(serial::
Serializer&) const virtual - Dump the object contents in a serializer stream.
-
void load(serial::
Deserializer&) virtual - Restore an object from a deserializer stream.