diff options
Diffstat (limited to 'include/bytecode.h')
-rw-r--r-- | include/bytecode.h | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/include/bytecode.h b/include/bytecode.h new file mode 100644 index 0000000..4a14b8d --- /dev/null +++ b/include/bytecode.h @@ -0,0 +1,40 @@ +#ifndef TSL_BYTECODE_H +#define TSL_BYTECODE_H + +#include "std/buffer.h" +#include <stdint.h> + +/* + All instructions are 4 bytes in size. +*/ + +typedef uint8_t TslOpcodeType; +typedef uint8_t TslRegister; +typedef uint16_t TslValueIndex; + +typedef enum { + TSL_OPCODE_ASSIGN +} TslOpcode; + +typedef struct { + TslBuffer buffer; +} TslBytecodeWriter; + +typedef struct { + TslOpcodeType opcode; + union { + TslRegister dst_reg; + TslRegister src_reg; + } type1; + union { + TslRegister dst_reg; + TslValueIndex value_index; + } type2; +} TslInstruction; + +void tsl_bytecode_writer_init(TslBytecodeWriter *self); +void tsl_bytecode_writer_deinit(TslBytecodeWriter *self); + +int tsl_bytecode_writer_assign(TslBytecodeWriter *self, TslRegister reg, double value); + +#endif /* TSL_BYTECODE_H */ |