Files
fz-lang/include/vm/fzl_vm.h
T
samsonium d95ff88b66 wip: working on extern in VM
- Feat: add usage of vm reader instead of old way in vm.c
- Ref: update debug opcodes printing
2026-11-05 23:23:38 +03:00

49 lines
764 B
C

#ifndef FZL_VM_H
#define FZL_VM_H
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <vm/fzl_vm_env.h>
#include <vm/fzl_vm_reader.h>
// VM descriptor
typedef struct
{
fzl_vm_reader_t *reader;
size_t ip;
bool allow_infinite;
size_t max_iter;
// Data stack
fzl_value_t dstack[256];
size_t dtop;
// Call stack
size_t cstack[256];
size_t ctop;
// Environment stack
fzl_vm_env_t *estack[256];
size_t etop;
} fzl_vm_t;
// Allocate FZL VM
fzl_vm_t *fzl_mkvm(fzl_vm_reader_t *reader);
// Load and run code
int fzl_vm_run(fzl_vm_t *vm);
// Get last VM error message
char *fzl_vm_geterror();
// Print opcodes sequence
void fzl_vm_print_ops(fzl_vm_t *vm);
// Free VM
void fzl_freevm(fzl_vm_t *vm);
#endif // FZL_VM_H