|
IDA SDK
|
Describes an argument location.
A typical argument is stored in one location, either a register or a stack slot.
However, some arguments can be stored in multiple locations, for example in a pair
of registers. In some really complex cases an argument can be located in multiple
registers and some stack slots. This class can describe all these cases.
Inherited by argpart_t.
Public Member Functions | |
| argloc_t (void) | |
| Constructor. | |
| argloc_t (const argloc_t &r) | |
| Constructor. | |
| ~argloc_t (void) | |
| Destructor. | |
| argloc_t & | operator= (const argloc_t &r) |
| Constructor. | |
| void | swap (argloc_t &r) |
| Assign this == r and r == this. | |
| const char * | dstr (void) const |
| argloc_type_t | atype (void) const |
| Get type (Argument location types) | |
| bool | is_reg1 (void) const |
| See ALOC_REG1. | |
| bool | is_reg2 (void) const |
| See ALOC_REG2. | |
| bool | is_reg (void) const |
| is_reg1() || is_reg2() | |
| bool | is_rrel (void) const |
| See ALOC_RREL. | |
| bool | is_ea (void) const |
| See ALOC_STATIC. | |
| bool | is_stkoff (void) const |
| See ALOC_STACK. | |
| bool | is_scattered (void) const |
| See ALOC_DIST. | |
| bool | is_mixed_scattered () const |
| mixed scattered: consists of register and stack parts | |
| bool | is_fragmented (void) const |
| is_scattered() || is_reg2() | |
| bool | is_custom (void) const |
| See ALOC_CUSTOM. | |
| bool | is_badloc (void) const |
| See ALOC_NONE. | |
| int | reg1 (void) const |
| Get the register info. More... | |
| int | regoff (void) const |
| Get offset from the beginning of the register in bytes. More... | |
| int | reg2 (void) const |
| Get info for the second register. More... | |
| uint32 | get_reginfo (void) const |
| Get all register info. More... | |
| sval_t | stkoff (void) const |
| Get the stack offset. More... | |
| ea_t | get_ea (void) const |
| Get the global address. More... | |
| scattered_aloc_t & | scattered (void) |
| Get scattered argument info. More... | |
| const scattered_aloc_t & | scattered (void) const |
| copydoc scattered() | |
| rrel_t & | get_rrel (void) |
| Get register-relative info. More... | |
| const rrel_t & | get_rrel (void) const |
| copydoc get_rrel() | |
| void * | get_custom (void) const |
| Get custom argloc info. More... | |
| biggest_t | get_biggest (void) const |
| Get largest element in internal union. | |
| void | _set_badloc (void) |
| Use set_badloc() | |
| void | _set_reg1 (int reg, int off=0) |
| Use set_reg1() | |
| void | _set_reg2 (int _reg1, int _reg2) |
| Use set_reg2() | |
| void | _set_stkoff (sval_t off) |
| Use set_stkoff() | |
| void | _set_ea (ea_t _ea) |
| Use set_ea. | |
| bool | _consume_rrel (rrel_t *p) |
| Use consume_rrel() | |
| bool | _consume_scattered (scattered_aloc_t *p) |
| Use consume_scattered() | |
| void | _set_custom (argloc_type_t ct, void *pdata) |
| Set custom argument location (careful - this function does not clean up!) | |
| void | _set_biggest (argloc_type_t ct, biggest_t data) |
| Set biggest element in internal union (careful - this function does not clean up!) | |
| void | set_reg1 (int reg, int off=0) |
| Set register location. | |
| void | set_reg2 (int _reg1, int _reg2) |
| Set secondary register location. | |
| void | set_stkoff (sval_t off) |
| Set stack offset location. | |
| void | set_ea (ea_t _ea) |
| Set static ea location. | |
| void | consume_rrel (rrel_t *p) |
| Set register-relative location - can't be NULL. | |
| void | consume_scattered (scattered_aloc_t *p) |
| Set distributed argument location. | |
| void | set_badloc (void) |
| Set to invalid location. | |
| sval_t | calc_offset (void) const |
| Calculate offset that can be used to compare 2 similar arglocs. | |
| bool | advance (int delta) |
| Move the location to point 'delta' bytes further. | |
Public Types | |
| typedef size_t | biggest_t |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Get the stack offset.
Use if atype() == ALOC_STACK
|
inline |
Get the global address.
Use when atype() == ALOC_STATIC
|
inline |
|
inline |
|
inline |
Get custom argloc info.
Use if atype() == ALOC_CUSTOM
1.8.9.1