|
IDA SDK
|
Ellipsis is not taken into account in the number of parameters The return type cannot be BT_ARRAY or BT_FUNC.
Modules | |
| Function attribute byte | |
Variables | |
| const type_t | BT_FUNC = 0x0C |
| function. More... | |
| const type_t | BTMT_DEFCALL = 0x00 |
| call method - default for model or unknown | |
| const type_t | BTMT_NEARCALL = 0x10 |
| function returns by retn | |
| const type_t | BTMT_FARCALL = 0x20 |
| function returns by retf | |
| const type_t | BTMT_INTCALL = 0x30 |
| function returns by iret in this case cc MUST be 'unknown' | |
| const type_t BT_FUNC = 0x0C |
function.
format:
optional: CM_CC_SPOILED | num_of_spoiled_regs
if num_of_spoiled_reg == BFA_FUNC_MARKER:
::bfa_byte
if (bfa_byte & BFA_FUNC_EXT_FORMAT) != 0
::fti_bits (only low bits: FTI_SPOILED,...,FTI_VIRTUAL)
num_of_spoiled_reg times: spoiled reg info (see extract_spoiledreg)
else
bfa_byte is function attribute byte (see Function attribute byte...)
else:
num_of_spoiled_reg times: spoiled reg info (see extract_spoiledreg)
cm_t ... calling convention and memory model
[tah-typeattrs];
type_t ... return type;
[serialized argloc_t of returned value (if CM_CC_SPECIAL{PE} && !return void);
if !CM_CC_VOIDARG:
dt N (N=number of parameters)
if ( N == 0 )
if CM_CC_ELLIPSIS or CM_CC_SPECIALE
func(...)
else
parameters are unknown
else
N records:
type_t ... (i.e. type of each parameter)
[serialized argloc_t (if CM_CC_SPECIAL{PE})] (i.e. place of each parameter)
[FAH_BYTE + de( funcarg_t::flags )]