mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-06-17 17:42:22 -07:00
49 lines
978 B
C
49 lines
978 B
C
// Copyright (c) 2024 Epic Games Tools
|
|
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
|
|
|
#ifndef EVAL2_MACHINE_H
|
|
#define EVAL2_MACHINE_H
|
|
|
|
////////////////////////////////
|
|
//~ allen: Eval Machine Types
|
|
|
|
typedef B32 EVAL_MemoryRead(void *u, void *out, U64 addr, U64 size);
|
|
|
|
typedef struct EVAL_Machine EVAL_Machine;
|
|
struct EVAL_Machine
|
|
{
|
|
void *u;
|
|
Architecture arch;
|
|
EVAL_MemoryRead *memory_read;
|
|
void *reg_data;
|
|
U64 reg_size;
|
|
U64 *module_base;
|
|
U64 *frame_base;
|
|
U64 *tls_base;
|
|
};
|
|
|
|
typedef union EVAL_Slot EVAL_Slot;
|
|
union EVAL_Slot
|
|
{
|
|
U64 u256[4];
|
|
U64 u128[2];
|
|
U64 u64;
|
|
S64 s64;
|
|
F64 f64;
|
|
F32 f32;
|
|
};
|
|
|
|
typedef struct EVAL_Result EVAL_Result;
|
|
struct EVAL_Result
|
|
{
|
|
EVAL_Slot value;
|
|
EVAL_ResultCode code;
|
|
};
|
|
|
|
////////////////////////////////
|
|
//~ allen: Eval Machine Functions
|
|
|
|
internal EVAL_Result eval_interpret(EVAL_Machine *machine, String8 bytecode);
|
|
|
|
#endif //EVAL2_MACHINE_H
|