Adding more definitions.

This commit is contained in:
Creeper Lv
2026-04-11 14:55:25 +08:00
parent d34c74f617
commit b35596a19a
5 changed files with 90 additions and 28 deletions
+33 -26
View File
@@ -4,40 +4,47 @@
#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.
#include "SagittariusBase.h"
typedef struct SagittariusRegister
{
// 256 Usable + Overflow preventing 256 extra bytes.
uint8_t head[512];
}SagittariusRegister;
typedef struct SagittariusMemory{
uint8_t* data;
} SagittariusRegister;
typedef struct SagittariusMemory
{
uint8_t *data;
uint64_t size;
} SagittariusMemory;
typedef struct SagittariusCore{
typedef struct SagittariusCore
{
SagittariusRegister reg;
SagittariusMemory* memory;
SagittariusMemory *memory;
uint64_t pc;
}SagittariusCore;
typedef int32_t(* SagittariusSyscall)(SagittariusCore* core, uint64_t arg_start);
typedef struct SagittariusSyscallEntry{
} 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;
} 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);
} SagittariusVM;
typedef struct SagittariusProgram
{
SagittariusInst *instructions;
uint64_t instCount;
uint8_t *data;
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
+12
View File
@@ -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
+16 -2
View File
@@ -145,7 +145,8 @@ typedef enum math2op
sag_math2_pow,
} math2op;
typedef enum math1op{
typedef enum math1op
{
sag_math1_sin,
sag_math1_cos,
sag_math1_tan,
@@ -156,7 +157,20 @@ typedef enum math1op{
sag_math1_acos,
sag_math1_atan,
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
{
uint64_t data;
+9
View File
@@ -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);
+20
View File
@@ -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