diff options
Diffstat (limited to 'src/fasm/runner/runner.h')
-rw-r--r-- | src/fasm/runner/runner.h | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/fasm/runner/runner.h b/src/fasm/runner/runner.h new file mode 100644 index 0000000..0dfa338 --- /dev/null +++ b/src/fasm/runner/runner.h @@ -0,0 +1,36 @@ +#pragma once + +#include <fasm/code_generator/code_generator.h> +#include <stdint.h> + +typedef struct FasmFunction { + uint8_t *returnTo; + uint8_t *stack; + size_t stack_size; +}FasmFunction; + +extern int fasmRunner(ByteCode bytecode); + +#define getNextNBitsHeader(bits) \ + extern uint##bits##_t getNext##bits##Bits(uint8_t **pos) +getNextNBitsHeader(8); +getNextNBitsHeader(16); +getNextNBitsHeader(32); +getNextNBitsHeader(64); + +#define pushToStackNBitsHeader(bits) \ + extern void pushToStack##bits##Bits(uint8_t **stack, size_t *stack_size, \ + size_t *stack_filled, \ + uint##bits##_t value) +pushToStackNBitsHeader(8); +pushToStackNBitsHeader(16); +pushToStackNBitsHeader(32); +pushToStackNBitsHeader(64); + +#define popFromStackNBitsHeader(bits) \ + extern uint##bits##_t popFromStack##bits##Bits( \ + uint8_t **stack, size_t *stack_size, size_t *stack_filled) +popFromStackNBitsHeader(8); +popFromStackNBitsHeader(16); +popFromStackNBitsHeader(32); +popFromStackNBitsHeader(64); |