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. 
 
 | 
| 
  | argloc_t () | 
|   | Constructor. 
  | 
|   | 
| 
  | argloc_t (const argloc_t &r) | 
|   | Constructor. 
  | 
|   | 
| 
  | ~argloc_t () | 
|   | Destructor. 
  | 
|   | 
| 
argloc_t &  | operator= (const argloc_t &r) | 
|   | Constructor. 
  | 
|   | 
| 
void  | swap (argloc_t &r) | 
|   | Assign this == r and r == this. 
  | 
|   | 
| 
const char *  | dstr () const | 
|   | 
| 
argloc_type_t  | atype () const | 
|   | Get type (Argument location types) 
  | 
|   | 
| 
bool  | is_reg1 () const | 
|   | See ALOC_REG1. 
  | 
|   | 
| 
bool  | is_reg2 () const | 
|   | See ALOC_REG2. 
  | 
|   | 
| 
bool  | is_reg () const | 
|   | is_reg1() || is_reg2() 
  | 
|   | 
| 
bool  | is_rrel () const | 
|   | See ALOC_RREL. 
  | 
|   | 
| 
bool  | is_ea () const | 
|   | See ALOC_STATIC. 
  | 
|   | 
| 
bool  | is_stkoff () const | 
|   | See ALOC_STACK. 
  | 
|   | 
| 
bool  | is_scattered () const | 
|   | See ALOC_DIST. 
  | 
|   | 
| 
bool  | has_reg () const | 
|   | TRUE if argloc has a register part. 
  | 
|   | 
| 
bool  | has_stkoff () const | 
|   | TRUE if argloc has a stack part. 
  | 
|   | 
| 
bool  | is_mixed_scattered () const | 
|   | mixed scattered: consists of register and stack parts 
  | 
|   | 
| 
bool  | in_stack () const | 
|   | TRUE if argloc is in stack entirely. 
  | 
|   | 
| 
bool  | is_fragmented () const | 
|   | is_scattered() || is_reg2() 
  | 
|   | 
| 
bool  | is_custom () const | 
|   | See ALOC_CUSTOM. 
  | 
|   | 
| 
bool  | is_badloc () const | 
|   | See ALOC_NONE. 
  | 
|   | 
| int  | reg1 () const | 
|   | Get the register info.  More...
  | 
|   | 
| int  | regoff () const | 
|   | Get offset from the beginning of the register in bytes.  More...
  | 
|   | 
| int  | reg2 () const | 
|   | Get info for the second register.  More...
  | 
|   | 
| uint32  | get_reginfo () const | 
|   | Get all register info.  More...
  | 
|   | 
| sval_t  | stkoff () const | 
|   | Get the stack offset.  More...
  | 
|   | 
| ea_t  | get_ea () const | 
|   | Get the global address.  More...
  | 
|   | 
| scattered_aloc_t &  | scattered () | 
|   | Get scattered argument info.  More...
  | 
|   | 
| const scattered_aloc_t &  | scattered () const | 
|   | Get scattered argument info.  More...
  | 
|   | 
| rrel_t &  | get_rrel () | 
|   | Get register-relative info.  More...
  | 
|   | 
| const rrel_t &  | get_rrel () const | 
|   | Get register-relative info.  More...
  | 
|   | 
| void *  | get_custom () const | 
|   | Get custom argloc info.  More...
  | 
|   | 
| 
biggest_t  | get_biggest () const | 
|   | Get largest element in internal union. 
  | 
|   | 
| 
void  | _set_badloc () | 
|   | 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 nullptr. 
  | 
|   | 
| 
void  | consume_scattered (scattered_aloc_t *p) | 
|   | Set distributed argument location. 
  | 
|   | 
| 
void  | set_badloc () | 
|   | Set to invalid location. 
  | 
|   | 
| 
sval_t  | calc_offset () const | 
|   | Calculate offset that can be used to compare 2 similar arglocs. 
  | 
|   | 
| 
bool  | advance (int delta) | 
|   | Move the location to point 'delta' bytes further. 
  | 
|   | 
| 
void  | align_reg_high (size_t size, size_t _slotsize) | 
|   | Set register offset to align it to the upper part of _SLOTSIZE. 
  | 
|   | 
| 
void  | align_stkoff_high (size_t size, size_t _slotsize) | 
|   | Set stack offset to align to the upper part of _SLOTSIZE. 
  | 
|   |