diff options
Diffstat (limited to 'src/compiler/fasm_generator/fasm_generator.h')
-rw-r--r-- | src/compiler/fasm_generator/fasm_generator.h | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/compiler/fasm_generator/fasm_generator.h b/src/compiler/fasm_generator/fasm_generator.h new file mode 100644 index 0000000..c6925ad --- /dev/null +++ b/src/compiler/fasm_generator/fasm_generator.h @@ -0,0 +1,31 @@ +#pragma once + +#include <compiler/tree_parser/tree_parser.h> +#include <fasm/lexer/lexer.h> +#include <stdint.h> + +typedef struct FasmVariable { + TreeDefineVariableMetadata const *variable; + uint64_t value; + bool isGlobal; +} FasmVariable; + +typedef struct FasmVariables { + FasmVariable *variables; + size_t size; +} FasmVariables; + +extern FasmLines generateFasm(SourceCode *code); +extern FasmLines generateFasmWithPrint(SourceCode *code); +extern FasmLines _generateFasm(const ParsedTree *root, SourceCode *code); + +extern bool nodeToFasmLine(const ParsedTree *node, FasmLines *lines, + FasmVariables *variables[], size_t variables_size, + SourceCode *code); + +extern void pushFasmLine(FasmLines *lines, FasmLine line); + +extern size_t getSizeOfVariable(const TreeDefineVariableMetadata *variable); +extern FasmVariable getVariableFasmKeyValue( + const TreeDefineVariableMetadata *variable, FasmVariables *variables[], + size_t variables_size); |