|
ReXGlue SDK
|
#include <rex/ppc/call.h>
Static Public Member Functions | |
| static constexpr PPCRegister & | GetIntegerRegister (PPCContext &ctx, size_t slot) noexcept |
| static constexpr PPCRegister & | GetFloatRegister (PPCContext &ctx, size_t ordinal) noexcept |
| static constexpr PPCVRegister & | GetVectorRegister (PPCContext &ctx, size_t ordinal) noexcept |
| static constexpr u32 | GetStackSlotAddress (const PPCContext &ctx, size_t slot) noexcept |
| template<size_t Bytes = sizeof(u32)> | |
| static constexpr u64 | GetIntegerArgumentValue (const PPCContext &ctx, u8 *base, size_t slot) noexcept |
| static f64 | GetFloatArgumentValue (const PPCContext &ctx, u8 *base, const ArgPlace &arg, bool single) noexcept |
| template<size_t Bytes = sizeof(u32)> | |
| static constexpr void | SetIntegerArgumentValue (PPCContext &ctx, u8 *base, size_t slot, u64 value) noexcept |
| static void | SetFloatArgumentValue (PPCContext &ctx, u8 *base, const ArgPlace &arg, f64 value, bool single) noexcept |
| static PPCVRegister | GetVectorArgumentValue (const PPCContext &ctx, u8 *base, const ArgPlace &arg) noexcept |
| static void | SetVectorArgumentValue (PPCContext &ctx, u8 *base, const ArgPlace &arg, const PPCVRegister &value) noexcept |
| template<ByValueType T> | |
| static T | GetValue (PPCContext &ctx, u8 *base, const ArgPlace &arg) noexcept |
| template<ByValueType T> | |
| static void | SetByValueArgumentValue (PPCContext &ctx, u8 *base, const ArgPlace &arg, const T &value) noexcept |
| template<BigEndianType T> | |
| static constexpr T | GetValue (PPCContext &ctx, u8 *base, const ArgPlace &arg) noexcept |
| template<MappedPtrType T> | |
| static T | GetValue (PPCContext &ctx, u8 *base, const ArgPlace &arg) noexcept |
| template<MappedPtrType T> | |
| static T | GetMappedPointerValue (u64 value, u8 *base) noexcept |
| template<VectorType T> | |
| static T | GetValue (PPCContext &ctx, u8 *base, const ArgPlace &arg) noexcept |
| template<PlainType T> | |
| static constexpr T | GetValue (PPCContext &ctx, u8 *base, const ArgPlace &arg) noexcept |
| template<typename T> requires std::is_pointer_v<T> | |
| static constexpr T | GetValue (PPCContext &ctx, u8 *base, const ArgPlace &arg) noexcept |
| template<typename T> requires std::is_pointer_v<T> | |
| static constexpr T | GetPointerValue (u64 value, u8 *base) noexcept |
| template<typename T> | |
| static constexpr void | SetValue (PPCContext &ctx, u8 *base, const ArgPlace &arg, T value) noexcept |
Static Public Attributes | |
| static constexpr size_t | kIntegerRegisters = 8 |
| static constexpr size_t | kFloatRegisters = 13 |
| static constexpr size_t | kVectorRegisters = 13 |
Reads and writes function arguments in the guest calling convention.
|
inlinestaticnoexcept |
Reads a float argument from its register or its stack slot.
| single | True when the argument is a 4 byte float. |
|
inlinestaticconstexprnoexcept |
| ordinal | The float argument index, under kFloatRegisters. |
|
inlinestaticconstexprnoexcept |
Reads an integer argument from its register or its stack slot.
| Bytes | The argument width in bytes, 4 or 8. |
|
inlinestaticconstexprnoexcept |
Returns the integer argument register for an argument image slot. The register is r3 for slot 0 through r10 for slot 7.
| slot | The slot, under kIntegerRegisters. |
|
inlinestaticnoexcept |
Converts the value of an integer register to a mapped pointer.
| value | Register value whose low 32 bits are the guest address. |
|
inlinestaticconstexprnoexcept |
Converts the value of an integer register to a host pointer.
| value | Register value whose low 32 bits are the guest address. |
|
inlinestaticconstexprnoexcept |
Returns the guest address of an argument image slot past the integer registers.
| ctx | The register file at the callee's entry. |
| slot | The slot, at least kIntegerRegisters. |
|
inlinestaticconstexprnoexcept |
Reads a pointer argument.
|
inlinestaticconstexprnoexcept |
Reads an integer or float argument.
|
inlinestaticnoexcept |
Reads a mapped pointer argument.
|
inlinestaticconstexprnoexcept |
Reads a big endian argument.
|
inlinestaticnoexcept |
Reads a structure argument from its registers and stack slots.
|
inlinestaticnoexcept |
Reads a vector argument from its register or its 16 byte stack slot pair.
|
inlinestaticconstexprnoexcept |
| ordinal | The vector argument index, under kVectorRegisters. |
|
inlinestaticnoexcept |
Writes a structure argument to its registers and stack slots.
|
inlinestaticnoexcept |
Writes a float argument to its register, and to its stack slot when its slot is past r10.
| single | True when the argument is a 4 byte float. |
|
inlinestaticconstexprnoexcept |
Writes an integer argument to its register or its stack slot.
| Bytes | The argument width in bytes, 4 or 8. |
| value | Value to write. A 4 byte value goes to the low word of a stack slot. |
|
inlinestaticconstexprnoexcept |
Writes an argument of any supported type.
|
inlinestaticnoexcept |
Writes a vector argument to its register or its 16 byte stack slot pair.
| value | The vector, stored byte reversed in the stack image. |
|
staticconstexpr |
Number of float argument registers, f1 to f13.
|
staticconstexpr |
Number of integer argument registers, r3 to r10.
|
staticconstexpr |
Number of vector argument registers, v1 to v13.