#ifndef __SAGITTARIUS_H_ #define __SAGITTARIUS_H_ #include "SagittariusInst.h" #include #include #include #ifdef _WIN32 #define SAGITTARIUS_API __declspec(dllexport) #else #define SAGITTARIUS_API __attribute__((visibility("default"))) #endif typedef struct SagittariusRegister{ //256 Usable + Overflow preventing 256 extra bytes. uint8_t head[512]; }SagittariusRegister; typedef struct SagittariusMemory{ uint8_t* data; uint64_t size; } SagittariusMemory; typedef struct SagittariusCore{ SagittariusRegister reg; SagittariusMemory* memory; uint64_t pc; }SagittariusCore; typedef int32_t(* SagittariusSyscall)(SagittariusCore* core, uint64_t arg_start); typedef struct SagittariusSyscallEntry{ uint64_t id; SagittariusSyscall syscall; }SagittariusSyscallEntry; typedef struct SagittariusVM{ SagittariusSyscallEntry* SagittariusSyscallEntries; uint64_t SagittariusSyscallCount; uint64_t SagittariusSyscallCapacity; SagittariusMemory Memory; }SagittariusVM; SAGITTARIUS_API SagittariusVM* sagittarius_vm_new(uint64_t memory_size); SAGITTARIUS_API void sagittarius_vm_free(SagittariusVM* vm); SAGITTARIUS_API void sagittarius_step(SagittariusVM* vm); SAGITTARIUS_API void sagittarius_mem_resize(SagittariusVM* vm, uint64_t new_size); SAGITTARIUS_API uint64_t sagittarius_mem_getsize(SagittariusVM* vm); #endif