#ifndef GLYPH_VM_H #define GLYPH_VM_H #include "../common/glyph_types.h" #include "../common/glyph_decode.h" #include "../substrate/substrate_engine.h" typedef struct { uint32_t pc; uint32_t *code; uint32_t code_len; Handle handles[MAX_HANDLES]; uint32_t handle_count; MemoryRegion regions[MAX_REGIONS]; uint32_t region_count; Message mailbox[MAX_MAILBOX]; uint32_t mailbox_head; uint32_t mailbox_tail; ExtSlot *ext_ops; uint32_t ext_ops_count; int32_t regs[256]; uint32_t call_stack[MAX_CALL_DEPTH]; uint32_t call_depth; int32_t cmp_flag; uint8_t current_mode; bool trace_enabled; bool running; uint64_t tick; } VM; void vm_init(VM *vm, uint32_t *code, uint32_t code_len, ExtSlot *ext_ops, uint32_t ext_ops_count); void vm_run(VM *vm); int vm_step(VM *vm); int vm_load_gobj(VM *vm, const char *path); #endif