From 43392fc66ab207e53a6924a2edbcd7ca0acecea8 Mon Sep 17 00:00:00 2001 From: A404M Date: Sat, 18 Jan 2025 20:42:54 +0330 Subject: initial commit --- src/compiler/code-generator.h | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/compiler/code-generator.h (limited to 'src/compiler/code-generator.h') diff --git a/src/compiler/code-generator.h b/src/compiler/code-generator.h new file mode 100644 index 0000000..3232fb3 --- /dev/null +++ b/src/compiler/code-generator.h @@ -0,0 +1,37 @@ +#pragma once + +#include "compiler/ast-tree.h" +#include +#include + +typedef enum CodeGeneratorInstruction : uint8_t { + CODE_GENERATOR_INSTRUCTION_PRINT, + CODE_GENERATOR_INSTRUCTION_RET, +} CodeGeneratorInstruction; + +typedef struct CodeGeneratorCode { + char *label_begin; + char *label_end; + CodeGeneratorInstruction instruction; +} CodeGeneratorCode; + +typedef struct CodeGeneratorCodes { + CodeGeneratorCode *codes; + size_t codes_size; +} CodeGeneratorCodes; + +CodeGeneratorCode createGenerateCode(char *label_begin, char *label_end, + CodeGeneratorInstruction instruction); + +CodeGeneratorCode *newGenerateCode(char *label_begin, char *label_end, + CodeGeneratorInstruction instruction); + +void generateCodePushCode(CodeGeneratorCodes *codes, CodeGeneratorCode code); + +CodeGeneratorCodes *codeGenerator(AstTreeRoot *astTreeRoot); + +bool codeGeneratorAstTreeFunction(char *label_begin,char *label_end,AstTree astTree, CodeGeneratorCodes *codes); + +char *codeGeneratorToFlatASM(const CodeGeneratorCodes *codes); + +bool codeGeneratorFlatASMExec(const char *filePath,const char *fasm); -- cgit v1.2.3