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)