Latest available version: IDA and decompilers v8.4.240320sp1 see all releases
Hex-Rays logo State-of-the-art binary code analysis tools
email icon

Register allocation calling convention. More...

#include <typeinf.hpp>

Public Member Functions

 callregs_t ()
 Constructor.
 
 callregs_t (cm_t cc)
 Constructor - initialize with the given request (see init_regs())
 
void swap (callregs_t &r)
 swap two instances
 
void init_regs (cm_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 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. More...
 

Static Public Member Functions

static int regcount (cm_t cc)
 Get max number of registers may be used in a function call.
 
static int findreg (const intvec_t &regs, int r)
 

Public Attributes

argreg_policy_t policy
 argument policy
 
int nregs
 max number of registers that can be used in a call
 
intvec_t gpregs
 array of gp registers
 
intvec_t fpregs
 array of fp registers
 

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. More...
 

Detailed Description

Register allocation calling convention.

(allocation policy, arrays of GP and FP registers)

Member Function Documentation

◆ reginds()

bool callregs_t::reginds ( int *  gp_ind,
int *  fp_ind,
int  r 
) const
inline

Get register indexes within GP/FP arrays.

(-1 -> is not present in the corresponding array)

◆ findregs()

bool callregs_t::findregs ( int *  gp_ind,
int *  fp_ind,
int  r,
const intvec_t gprs,
const intvec_t fprs 
) const
inlineprotected

Search for register r in gprs and fprs.

If found, fill gp_ind and fp_ind based on policy


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