MCPcopy Create free account
hub / github.com/Vector35/binaryninja-api / __init__

Method __init__

python/callingconvention.py:56–199  ·  view source on GitHub ↗
(
	    self, arch: Optional['architecture.Architecture'] = None, name: Optional[str] = None, handle=None,
	    confidence: int = core.max_confidence
	)

Source from the content-addressed store, hash-verified

54 _registered_calling_conventions = []
55
56 def __init__(
57 self, arch: Optional['architecture.Architecture'] = None, name: Optional[str] = None, handle=None,
58 confidence: int = core.max_confidence
59 ):
60 if handle is None:
61 if arch is None or name is None:
62 raise ValueError("Must specify either handle or architecture and name")
63 self._arch = arch
64 self._pending_reg_lists = {}
65 self._cb = core.BNCustomCallingConvention()
66 self._cb.context = 0
67 self._cb.getCallerSavedRegisters = self._cb.getCallerSavedRegisters.__class__(self._get_caller_saved_regs)
68 self._cb.getCalleeSavedRegisters = self._cb.getCalleeSavedRegisters.__class__(self._get_callee_saved_regs)
69 self._cb.getIntegerArgumentRegisters = self._cb.getIntegerArgumentRegisters.__class__(
70 self._get_int_arg_regs
71 )
72 self._cb.getFloatArgumentRegisters = self._cb.getFloatArgumentRegisters.__class__(self._get_float_arg_regs)
73 self._cb.freeRegisterList = self._cb.freeRegisterList.__class__(self._free_register_list)
74 self._cb.areArgumentRegistersSharedIndex = self._cb.areArgumentRegistersSharedIndex.__class__(
75 self._arg_regs_share_index
76 )
77 self._cb.areArgumentRegistersUsedForVarArgs = self._cb.areArgumentRegistersUsedForVarArgs.__class__(
78 self._arg_regs_used_for_varargs
79 )
80 self._cb.isStackReservedForArgumentRegisters = self._cb.isStackReservedForArgumentRegisters.__class__(
81 self._stack_reserved_for_arg_regs
82 )
83 self._cb.isStackAdjustedOnReturn = self._cb.isStackAdjustedOnReturn.__class__(
84 self._stack_adjusted_on_return
85 )
86 self._cb.isEligibleForHeuristics = self._cb.isEligibleForHeuristics.__class__(self._eligible_for_heuristics)
87 self._cb.getIntegerReturnValueRegister = self._cb.getIntegerReturnValueRegister.__class__(
88 self._get_int_return_reg
89 )
90 self._cb.getHighIntegerReturnValueRegister = self._cb.getHighIntegerReturnValueRegister.__class__(
91 self._get_high_int_return_reg
92 )
93 self._cb.getFloatReturnValueRegister = self._cb.getFloatReturnValueRegister.__class__(
94 self._get_float_return_reg
95 )
96 self._cb.getGlobalPointerRegister = self._cb.getGlobalPointerRegister.__class__(
97 self._get_global_pointer_reg
98 )
99 self._cb.getImplicitlyDefinedRegisters = self._cb.getImplicitlyDefinedRegisters.__class__(
100 self._get_implicitly_defined_regs
101 )
102 self._cb.getIncomingRegisterValue = self._cb.getIncomingRegisterValue.__class__(
103 self._get_incoming_reg_value
104 )
105 self._cb.getIncomingFlagValue = self._cb.getIncomingFlagValue.__class__(self._get_incoming_flag_value)
106 self._cb.getIncomingVariableForParameterVariable = self._cb.getIncomingVariableForParameterVariable.__class__(
107 self._get_incoming_var_for_parameter_var
108 )
109 self._cb.getParameterVariableForIncomingVariable = self._cb.getParameterVariableForIncomingVariable.__class__(
110 self._get_parameter_var_for_incoming_var
111 )
112 _handle = core.BNCreateCallingConvention(arch.handle, name, self._cb)
113 self.__class__._registered_calling_conventions.append(self)

Callers

nothing calls this directly

Calls 3

get_reg_nameMethod · 0.80
appendMethod · 0.45
_from_cacheMethod · 0.45

Tested by

no test coverage detected