Initial Commit

This commit is contained in:
Creeper Lv
2026-04-11 12:52:14 +08:00
commit 349c71e4ea
6 changed files with 263 additions and 0 deletions
+43
View File
@@ -0,0 +1,43 @@
#ifndef __SAGITTARIUS_H_
#define __SAGITTARIUS_H_
#include "SagittariusInst.h"
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#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