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

Records