wip: working on externs loading

- WIP: add extern objects initializing/freeing functions
- Feat: add extern objects loading in VM initializer
This commit is contained in:
samsonium
2026-11-08 17:12:31 +03:00
parent 5de995a3c2
commit 1c57525604
4 changed files with 270 additions and 0 deletions
+2
View File
@@ -5,12 +5,14 @@
#include <stddef.h>
#include <stdint.h>
#include <vm/fzl_vm_env.h>
#include <vm/fzl_vm_extern.h>
#include <vm/fzl_vm_reader.h>
// VM descriptor
typedef struct
{
fzl_vm_reader_t *reader;
fzl_vm_extern_t *prep_fns;
size_t ip;
+21
View File
@@ -2,6 +2,8 @@
#define FZL_VM_EXTERN_H
#include <ffi.h>
#include <stddef.h>
#include <vm/fzl_vm_reader.h>
// Loaded extern function definition
typedef struct
@@ -9,6 +11,25 @@ typedef struct
void *func_ptr;
ffi_cif cif;
ffi_type **arg_types;
} fzl_vm_sym_t;
// Extern object descriptor
typedef struct
{
void **libs;
size_t libs_loaded;
fzl_vm_sym_t *syms;
size_t syms_loaded;
} fzl_vm_extern_t;
// Load externs
fzl_vm_extern_t *fzl_vm_init_externs(fzl_vm_reader_t *reader);
// Get last error from externs loader
char *fzl_vm_externs_geterror();
// Close and free externs
void fzl_vm_free_externs(fzl_vm_extern_t *ex);
#endif // FZL_VM_EXTERN_H