Added more definitions.
This commit is contained in:
+14
-2
@@ -7,7 +7,7 @@
|
||||
#include "SagittariusBase.h"
|
||||
typedef struct SagittariusRegister
|
||||
{
|
||||
// 256 Usable + Overflow preventing 256 extra bytes.
|
||||
// 256 Usable + Overflow preventing purpose 256 extra bytes.
|
||||
uint8_t head[512];
|
||||
} SagittariusRegister;
|
||||
typedef struct SagittariusMemory
|
||||
@@ -19,9 +19,11 @@ typedef struct SagittariusCore
|
||||
{
|
||||
SagittariusRegister reg;
|
||||
SagittariusMemory *memory;
|
||||
struct SagittariusVM *vm;
|
||||
uint64_t pc;
|
||||
} SagittariusCore;
|
||||
typedef int32_t (*SagittariusSyscall)(SagittariusCore *core, uint64_t arg_start);
|
||||
typedef int32_t (*SagittariusSyscall)(SagittariusCore *core);
|
||||
typedef int32_t (*SagittariusPanicHandler)(SagittariusCore *core, uint64_t panic_id, const char *msg);
|
||||
typedef struct SagittariusSyscallEntry
|
||||
{
|
||||
uint64_t id;
|
||||
@@ -32,8 +34,16 @@ typedef struct SagittariusVM
|
||||
SagittariusSyscallEntry *SagittariusSyscallEntries;
|
||||
uint64_t SagittariusSyscallCount;
|
||||
uint64_t SagittariusSyscallCapacity;
|
||||
SagittariusCore core;
|
||||
SagittariusMemory Memory;
|
||||
SagittariusPanicHandler panic_handler;
|
||||
} SagittariusVM;
|
||||
/**
|
||||
* The layout of program in byte form (without the head):
|
||||
* |0..31|32..95|96..159|160..|...
|
||||
* |format version|inst count|data size|instructions...|data...|
|
||||
* |uint32|uint64|uint64|inst1|inst2|...|data...|
|
||||
*/
|
||||
typedef struct SagittariusProgram
|
||||
{
|
||||
SagittariusInst *instructions;
|
||||
@@ -42,9 +52,11 @@ typedef struct SagittariusProgram
|
||||
uint64_t data_size;
|
||||
} SagittariusProgram;
|
||||
SAGITTARIUS_API SagittariusVM *sagittarius_vm_new(uint64_t memory_size);
|
||||
SAGITTARIUS_API void sagittarius_register_syscall(SagittariusVM *vm, uint64_t id, SagittariusSyscall syscall);
|
||||
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);
|
||||
SAGITTARIUS_API void sagittarius_load_program_to_mem(SagittariusVM *vm, SagittariusProgram *program, uint64_t offset);
|
||||
SAGITTARIUS_API SagittariusProgram *sagittarius_load_program_from_byte_array(uint8_t *data, uint64_t size);
|
||||
#endif
|
||||
Reference in New Issue
Block a user