summaryrefslogtreecommitdiff
path: root/src/vm.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/vm.h')
-rw-r--r--src/vm.h90
1 files changed, 47 insertions, 43 deletions
diff --git a/src/vm.h b/src/vm.h
index 365b98e..143275f 100644
--- a/src/vm.h
+++ b/src/vm.h
@@ -22,59 +22,63 @@
#define STACK_CAPACITY 1024
#define HEAP_CAPACITY 1024
-typedef enum inst_type {
- // stack
- INST_PUSH,
- INST_DUP,
- INST_COPY,
- INST_SWAP,
- INST_DROP,
- INST_SLIDE,
- // arithmetics
- INST_ADD,
- INST_SUB,
- INST_MUL,
- INST_DIV,
- INST_MOD,
- // heap access
- INST_STORE,
- INST_LOAD,
- // Flow control
- INST_CALL,
- INST_RET,
- INST_LABEL,
- INST_JMP,
- INST_JMPZ,
- INST_JMPN,
- // I/O
- INST_PRINTI,
- INST_PRINTC,
- INST_READI,
- INST_READC,
- INST_END,
+typedef enum inst_type
+{
+ // stack
+ INST_PUSH,
+ INST_DUP,
+ INST_COPY,
+ INST_SWAP,
+ INST_DROP,
+ INST_SLIDE,
+ // arithmetics
+ INST_ADD,
+ INST_SUB,
+ INST_MUL,
+ INST_DIV,
+ INST_MOD,
+ // heap access
+ INST_STORE,
+ INST_LOAD,
+ // Flow control
+ INST_CALL,
+ INST_RET,
+ INST_LABEL,
+ INST_JMP,
+ INST_JMPZ,
+ INST_JMPN,
+ // I/O
+ INST_PRINTI,
+ INST_PRINTC,
+ INST_READI,
+ INST_READC,
+ INST_END,
} inst_type_t;
-typedef struct instr {
- inst_type_t type;
- int operand;
+typedef struct instr
+{
+ inst_type_t type;
+ int operand;
} inst_t;
-typedef struct label {
- int name;
- int index;
+typedef struct label
+{
+ int name;
+ int index;
} label_t;
-typedef struct vm {
- stack_t stack;
- stack_t call_stack;
- int *heap;
- label_t *labels;
+typedef struct vm
+{
+ stack_t stack;
+ stack_t call_stack;
+ int* heap;
+ label_t* labels;
} vm_t;
void
-vm_init(vm_t *vm);
+vm_init(vm_t* vm);
void
-vm_run(vm_t *vm, inst_t *insts);
+vm_run(vm_t* vm, inst_t* insts);
#endif /* VM_H */