State-of-the-art binary code analysis tools
sreg_range_t Struct Reference

Detailed Description

The values of the segment registers are kept as address ranges.

The segment register does not change its value within one address range. The processor module finds segment register change points and splits sreg_range_t ranges so that a new sreg_range_t range is started at each segment register change point. The kernel deletes sreg_range_t if an instruction is converted back to unexplored bytes.

So, we have information about a segment register by keeping information about the range of addresses where segment register does not change the value.

Note that each segment has information about the default values of the segment registers. This information is used if the value of a segment register could not be determined.

Inherits range_t.

Public Attributes

sel_t val
 segment register value
 
uchar tag
 Segment register range tags
 
- Public Attributes inherited from range_t
ea_t start_ea
 start_ea included
 
ea_t end_ea
 end_ea excluded
 

Additional Inherited Members

- Public Member Functions inherited from range_t
 range_t (void)
 Constructor.
 
 range_t (ea_t ea1, ea_t ea2)
 Constructor.
 
int compare (const range_t &r) const
 Compare two range_t instances, based on the start_ea.
 
bool operator== (const range_t &r) const
 Compare two range_t's with '=='.
 
bool operator != (const range_t &r) const
 Compare two range_t's with '!='.
 
bool operator > (const range_t &r) const
 Compare two range_t's with '<'.
 
bool operator< (const range_t &r) const
 Compare two range_t's with '>'.
 
bool contains (ea_t ea) const
 Is 'ea' in the address range?
 
bool contains (const range_t &r) const
 Is every ea in 'r' also in this range_t?
 
bool overlaps (const range_t &r) const
 Is there an ea in 'r' that is also in this range_t?
 
void clear (void)
 Set start_ea, end_ea to 0.
 
bool empty (void) const
 Is the size of the range_t <= 0?
 
asize_t size (void) const
 Get end_ea - start_ea.
 
void intersect (const range_t &r)
 Assign the range_t to the intersection between the range_t and 'r'.
 
void extend (ea_t ea)
 Ensure that the range_t includes 'ea'.
 
size_t print (char *buf, size_t bufsize) const
 Print the range_t. More...
 

The documentation for this struct was generated from the following file: