Initial Commit
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user