Latest available version: IDA and decompilers v8.4.240527sp2 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 ()
 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

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

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: