class Abi
Defined at line 18 of file ../../src/developer/debug/zxdb/expr/abi.h
Public Methods
bool IsRegisterCalleeSaved (debug::RegisterID reg)
Returns true if the register is one of the callee-saved registers that is supposed to be
preserved across function calls. These registers should generally be valid in non-topmost
stack frames as the unwind information should be able to reconstitute them.
debug::RegisterID GetReturnRegisterForMachineInt ()
Returns the register used to return a machine word like a pointer or a "regular"-sized integer.
std::optional<debug::RegisterID> GetReturnRegisterForBaseType (const BaseType * base_type)
Returns the register information for returning the given base type from a function call.
Returns nullopt if the base type is unsupported or the value doesn't fit into a single register
(for example, 128 bit numbers are often split across several registers).
The returned register might be larger than the base_type. In this case, the low bytes of the
register up to the size of the base type are used.
std::optional<CollectionReturn> GetCollectionReturnByRefLocation (const Collection * collection)
Returns the information about how the given collection is returned. The collection must be
concrete and it must be returned by reference. Returns nullopt if the debugger can't compute
this.
std::optional<CollectionByValueReturn> GetCollectionReturnByValueLocation (const fxl::RefPtr<EvalContext> & eval_context, const Collection * collection)
The collection must be concrete. Returns nullopt if the debugger can't compute this.
std::optional<std::vector<debug::RegisterID>> GetFunctionParameterRegisters ()
Returns the list of registers to use for function parameters, the order of registers must be
in the order that is specified by the ABI.
void ~Abi ()
Defined at line 55 of file ../../src/developer/debug/zxdb/expr/abi.h