#pragma once #include #include 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);