aboutsummaryrefslogtreecommitdiff
path: root/src/fvm.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/fvm.h')
-rw-r--r--src/fvm.h37
1 files changed, 17 insertions, 20 deletions
diff --git a/src/fvm.h b/src/fvm.h
index 9cd18a4..e4a5dc7 100644
--- a/src/fvm.h
+++ b/src/fvm.h
@@ -3,20 +3,17 @@
#include <stdint.h>
-typedef int64_t fvm_word_t;
-typedef double fvm_float_t;;
-
struct fvm;
// return non-zero if vm should be suspended
-typedef void (*fvm_syscall_fn_t)(struct fvm* vm);
+typedef void (*fvm_syscall_fn)(struct fvm* vm);
struct fvm {
- fvm_word_t sp; // stack pointer
- fvm_word_t bp; // base pointer
- fvm_word_t pc; // programm counter
- fvm_word_t rv; // return value
- fvm_syscall_fn_t *syscall_table;
+ int64_t sp; // stack pointer
+ int64_t bp; // base pointer
+ int64_t pc; // programm counter
+ int64_t rv; // return value
+ fvm_syscall_fn *syscall_table;
};
enum fvm_op {
@@ -100,22 +97,22 @@ enum fvm_op {
int fvm_init(struct fvm *vm, void *code, int64_t stack_size);
int64_t fvm_execute(struct fvm *vm);
-void fvm_push(struct fvm *vm, fvm_word_t value);
+void fvm_push(struct fvm *vm, int64_t value);
int64_t fvm_pop(struct fvm *vm);
-fvm_float_t fvm_loadf(struct fvm *vm, fvm_word_t addr);
-void fvm_storef(struct fvm *vm, fvm_word_t addr, fvm_float_t val);
+double fvm_loadf(struct fvm *vm, int64_t addr);
+void fvm_storef(struct fvm *vm, int64_t addr, double val);
-fvm_word_t fvm_load(struct fvm *vm, fvm_word_t addr);
-void fvm_store(struct fvm *vm, fvm_word_t addr, int64_t value);
+int64_t fvm_load(struct fvm *vm, int64_t addr);
+void fvm_store(struct fvm *vm, int64_t addr, int64_t value);
-int32_t fvm_load32(struct fvm *vm, fvm_word_t addr);
-void fvm_store32(struct fvm *vm, fvm_word_t addr, int32_t value);
+int32_t fvm_load32(struct fvm *vm, int64_t addr);
+void fvm_store32(struct fvm *vm, int64_t addr, int32_t value);
-int16_t fvm_load16(struct fvm *vm, fvm_word_t addr);
-void fvm_store16(struct fvm *vm, fvm_word_t addr, int16_t value);
+int16_t fvm_load16(struct fvm *vm, int64_t addr);
+void fvm_store16(struct fvm *vm, int64_t addr, int16_t value);
-int8_t fvm_load8(struct fvm *vm, fvm_word_t addr);
-void fvm_store8(struct fvm *vm, fvm_word_t addr, int8_t value);
+int8_t fvm_load8(struct fvm *vm, int64_t addr);
+void fvm_store8(struct fvm *vm, int64_t addr, int8_t value);
#endif