|
IDA C++ SDK 9.2
|
Register allocation calling convention. More...
#include <typeinf.hpp>
Public Types | |
| enum | reg_kind_t { GPREGS , FPREGS } |
| Init registers (sequential) More... | |
Public Member Functions | |
| callregs_t () | |
| Constructor. | |
| callregs_t (callcnv_t cc) | |
| Constructor - initialize with the given request (see init_regs()) | |
| void | swap (callregs_t &r) |
| swap two instances | |
| bool | init_regs (callcnv_t cc) |
| Init policy & registers for given CC. | |
| bool | by_slots () const |
| void | set (argreg_policy_t _policy, const int *gprs, const int *fprs) |
| Init policy & registers (arrays are -1-terminated) | |
| void | append_registers (reg_kind_t kind, int first_reg, int last_reg) |
| void | set_registers (reg_kind_t kind, int first_reg, int last_reg) |
| void | reset () |
| Set policy and registers to invalid values. | |
| bool | reginds (int *gp_ind, int *fp_ind, int r) const |
| Get register indexes within GP/FP arrays. | |
Static Public Member Functions | |
| static int | regcount (callcnv_t cc) |
| Get max number of registers may be used in a function call. | |
| static int | findreg (const intvec_t ®s, int r) |
Public Attributes | |
| argreg_policy_t | policy = ARGREGS_POLICY_UNDEFINED |
| argument policy | |
| int | nregs = 0 |
| max number of registers that can be used in a call | |
| intvec_t | gpregs |
| array of gp registers (general purpose) | |
| intvec_t | fpregs |
| array of fp registers (floating point) | |
Protected Member Functions | |
| bool | findregs (int *gp_ind, int *fp_ind, int r, const intvec_t &gprs, const intvec_t &fprs) const |
| Search for register r in gprs and fprs. | |
Register allocation calling convention.
(allocation policy, arrays of GP and FP registers)
|
inline |
Constructor.
|
inline |
Constructor - initialize with the given request (see init_regs())
|
inline |
swap two instances
|
inline |
|
inline |
Init policy & registers (arrays are -1-terminated)
|
inline |
|
inline |
|
inline |
Set policy and registers to invalid values.
|
inlinestatic |
Get max number of registers may be used in a function call.
|
inlinestatic |
|
inline |
Get register indexes within GP/FP arrays.
(-1 -> is not present in the corresponding array)
|
inlineprotected |
Search for register r in gprs and fprs.
If found, fill gp_ind and fp_ind based on policy
| argreg_policy_t callregs_t::policy = ARGREGS_POLICY_UNDEFINED |
argument policy
| int callregs_t::nregs = 0 |
max number of registers that can be used in a call
| intvec_t callregs_t::gpregs |
array of gp registers (general purpose)
| intvec_t callregs_t::fpregs |
array of fp registers (floating point)