Adding more definitions.
This commit is contained in:
+33
-26
@@ -4,40 +4,47 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#ifdef _WIN32
|
#include "SagittariusBase.h"
|
||||||
#define SAGITTARIUS_API __declspec(dllexport)
|
typedef struct SagittariusRegister
|
||||||
#else
|
{
|
||||||
#define SAGITTARIUS_API __attribute__((visibility("default")))
|
// 256 Usable + Overflow preventing 256 extra bytes.
|
||||||
#endif
|
|
||||||
typedef struct SagittariusRegister{
|
|
||||||
//256 Usable + Overflow preventing 256 extra bytes.
|
|
||||||
uint8_t head[512];
|
uint8_t head[512];
|
||||||
}SagittariusRegister;
|
} SagittariusRegister;
|
||||||
typedef struct SagittariusMemory{
|
typedef struct SagittariusMemory
|
||||||
uint8_t* data;
|
{
|
||||||
|
uint8_t *data;
|
||||||
uint64_t size;
|
uint64_t size;
|
||||||
} SagittariusMemory;
|
} SagittariusMemory;
|
||||||
typedef struct SagittariusCore{
|
typedef struct SagittariusCore
|
||||||
|
{
|
||||||
SagittariusRegister reg;
|
SagittariusRegister reg;
|
||||||
SagittariusMemory* memory;
|
SagittariusMemory *memory;
|
||||||
uint64_t pc;
|
uint64_t pc;
|
||||||
}SagittariusCore;
|
} SagittariusCore;
|
||||||
typedef int32_t(* SagittariusSyscall)(SagittariusCore* core, uint64_t arg_start);
|
typedef int32_t (*SagittariusSyscall)(SagittariusCore *core, uint64_t arg_start);
|
||||||
typedef struct SagittariusSyscallEntry{
|
typedef struct SagittariusSyscallEntry
|
||||||
|
{
|
||||||
uint64_t id;
|
uint64_t id;
|
||||||
SagittariusSyscall syscall;
|
SagittariusSyscall syscall;
|
||||||
}SagittariusSyscallEntry;
|
} SagittariusSyscallEntry;
|
||||||
typedef struct SagittariusVM{
|
typedef struct SagittariusVM
|
||||||
SagittariusSyscallEntry* SagittariusSyscallEntries;
|
{
|
||||||
|
SagittariusSyscallEntry *SagittariusSyscallEntries;
|
||||||
uint64_t SagittariusSyscallCount;
|
uint64_t SagittariusSyscallCount;
|
||||||
uint64_t SagittariusSyscallCapacity;
|
uint64_t SagittariusSyscallCapacity;
|
||||||
SagittariusMemory Memory;
|
SagittariusMemory Memory;
|
||||||
}SagittariusVM;
|
} SagittariusVM;
|
||||||
|
typedef struct SagittariusProgram
|
||||||
SAGITTARIUS_API SagittariusVM* sagittarius_vm_new(uint64_t memory_size);
|
{
|
||||||
SAGITTARIUS_API void sagittarius_vm_free(SagittariusVM* vm);
|
SagittariusInst *instructions;
|
||||||
SAGITTARIUS_API void sagittarius_step(SagittariusVM* vm);
|
uint64_t instCount;
|
||||||
SAGITTARIUS_API void sagittarius_mem_resize(SagittariusVM* vm, uint64_t new_size);
|
uint8_t *data;
|
||||||
SAGITTARIUS_API uint64_t sagittarius_mem_getsize(SagittariusVM* vm);
|
uint64_t data_size;
|
||||||
|
} SagittariusProgram;
|
||||||
|
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);
|
||||||
|
SAGITTARIUS_API void sagittarius_load_program_to_mem(SagittariusVM *vm, SagittariusProgram *program, uint64_t offset);
|
||||||
#endif
|
#endif
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
#ifndef _SAGITTARIUS_BASE_H_
|
||||||
|
#define _SAGITTARIUS_BASE_H_
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
#define SAGITTARIUS_API __declspec(dllexport)
|
||||||
|
#define internal
|
||||||
|
#else
|
||||||
|
#define SAGITTARIUS_API __attribute__((visibility("default")))
|
||||||
|
#define internal __attribute__((visibility("hidden")))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -145,7 +145,8 @@ typedef enum math2op
|
|||||||
sag_math2_pow,
|
sag_math2_pow,
|
||||||
|
|
||||||
} math2op;
|
} math2op;
|
||||||
typedef enum math1op{
|
typedef enum math1op
|
||||||
|
{
|
||||||
sag_math1_sin,
|
sag_math1_sin,
|
||||||
sag_math1_cos,
|
sag_math1_cos,
|
||||||
sag_math1_tan,
|
sag_math1_tan,
|
||||||
@@ -156,7 +157,20 @@ typedef enum math1op{
|
|||||||
sag_math1_acos,
|
sag_math1_acos,
|
||||||
sag_math1_atan,
|
sag_math1_atan,
|
||||||
sag_math1_abs,
|
sag_math1_abs,
|
||||||
}math1op;
|
} math1op;
|
||||||
|
typedef enum sagittarius_type
|
||||||
|
{
|
||||||
|
st_uint8,
|
||||||
|
st_uint16,
|
||||||
|
st_uint32,
|
||||||
|
st_uint64,
|
||||||
|
st_int8,
|
||||||
|
st_int16,
|
||||||
|
st_int32,
|
||||||
|
st_int64,
|
||||||
|
st_single,
|
||||||
|
st_double
|
||||||
|
} sagittarius_type;
|
||||||
typedef struct SagittariusInst
|
typedef struct SagittariusInst
|
||||||
{
|
{
|
||||||
uint64_t data;
|
uint64_t data;
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
#include "Sagittarius.h"
|
||||||
|
#include <stdbool.h>
|
||||||
|
internal bool SagMath2Add(SagittariusCore *core, sagittarius_type t, uint8_t L, uint8_t R, uint8_t T);
|
||||||
|
internal bool SagMath2Sub(SagittariusCore *core, sagittarius_type t, uint8_t L, uint8_t R, uint8_t T);
|
||||||
|
internal bool SagMath2Mul(SagittariusCore *core, sagittarius_type t, uint8_t L, uint8_t R, uint8_t T);
|
||||||
|
internal bool SagMath2Div(SagittariusCore *core, sagittarius_type t, uint8_t L, uint8_t R, uint8_t T);
|
||||||
|
internal bool SagMath2Mod(SagittariusCore *core, sagittarius_type t, uint8_t L, uint8_t R, uint8_t T);
|
||||||
|
internal bool Math2Op(SagittariusCore *core, SagittariusInst inst);
|
||||||
|
internal bool Math1Op(SagittariusCore *core, SagittariusInst inst);
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
#ifndef _SAGITTARIUS_PANIC_H_
|
||||||
|
#define _SAGITTARIUS_PANIC_H_
|
||||||
|
#include <stdint.h>
|
||||||
|
typedef enum SagMsgLevel
|
||||||
|
{
|
||||||
|
info,
|
||||||
|
warn,
|
||||||
|
error,
|
||||||
|
fatal
|
||||||
|
} SagMsgLevel;
|
||||||
|
typedef struct NoticiableMsg
|
||||||
|
{
|
||||||
|
SagMsgLevel level;
|
||||||
|
uint64_t NoticiableId;
|
||||||
|
char* msg;
|
||||||
|
} NoticiableMsg;
|
||||||
|
#define Sagittarius_Msg_Generic 0x0000_0000_0000_0000
|
||||||
|
#define Sagittarius_Msg_Unknown 0xFFFFFFFFFFFFFFFF
|
||||||
|
#define Sagittarius_Msg_OOB 0x1000_0000_0000_0000
|
||||||
|
#endif
|
||||||
Reference in New Issue
Block a user