decompiler
1.0.0
|
A record describing how logical values are split. More...
#include <translate.hh>
Public Member Functions | |
int4 | numPieces (void) const |
Get number of pieces in this record. | |
bool | isFloatExtension (void) const |
Does this record extend a float varnode. | |
const VarnodeData & | getPiece (int4 i) const |
Get the i-th piece. | |
const VarnodeData & | getUnified (void) const |
Get the Varnode whole. | |
Address | getEquivalentAddress (uintb offset, int4 &pos) const |
Given offset in space, get equivalent address of piece. More... | |
bool | operator< (const JoinRecord &op2) const |
Compare records lexigraphically by pieces. More... | |
Private Attributes | |
vector< VarnodeData > | pieces |
All the physical pieces of the symbol. | |
VarnodeData | unified |
Special entry representing entire symbol in one chunk. | |
Friends | |
class | AddrSpaceManager |
A record describing how logical values are split.
The decompiler can describe a logical value that is stored split across multiple physical memory locations. This record describes such a split. The pieces must be listed from most significant to least significant.
Address JoinRecord::getEquivalentAddress | ( | uintb | offset, |
int4 & | pos | ||
) | const |
Given offset in space, get equivalent address of piece.
The join space range maps to the underlying pieces in a natural endian aware way. Given an offset in the range, figure out what address it is mapping to. The particular piece is passed back as an index, and the Address is returned.
offset | is the offset within this range to map |
pos | will hold the passed back piece index |
Referenced by AddrSpaceManager::renormalizeJoinAddress().
bool JoinRecord::operator< | ( | const JoinRecord & | op2 | ) | const |
Compare records lexigraphically by pieces.
Allow sorting on JoinRecords so that a collection of pieces can be quickly mapped to its logical whole, specified with a join address
References pieces, VarnodeData::size, and unified.