From b945815a225c3efdef5df03af52f921f98f9ed90 Mon Sep 17 00:00:00 2001 From: A404M Date: Sat, 25 Jan 2025 20:53:59 +0330 Subject: add function call --- src/compiler/code-generator.h | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'src/compiler/code-generator.h') diff --git a/src/compiler/code-generator.h b/src/compiler/code-generator.h index f9ac6c9..94552ed 100644 --- a/src/compiler/code-generator.h +++ b/src/compiler/code-generator.h @@ -6,6 +6,7 @@ typedef enum CodeGeneratorInstruction : uint8_t { CODE_GENERATOR_INSTRUCTION_PRINT, + CODE_GENERATOR_INSTRUCTION_CALL, CODE_GENERATOR_INSTRUCTION_RET, } CodeGeneratorInstruction; @@ -13,8 +14,14 @@ typedef struct CodeGeneratorCode { char *label_begin; char *label_end; CodeGeneratorInstruction instruction; + void *metadata; } CodeGeneratorCode; +typedef struct CodeGeneratorCall { + char *label_begin; + char *label_end; +} CodeGeneratorCall; + typedef struct CodeGeneratorCodes { CodeGeneratorCode *codes; size_t codes_size; @@ -23,7 +30,7 @@ typedef struct CodeGeneratorCodes { void codeGeneratorDelete(CodeGeneratorCodes *code); CodeGeneratorCode createGenerateCode(char *label_begin, char *label_end, - CodeGeneratorInstruction instruction); + CodeGeneratorInstruction instruction,void *metadata); CodeGeneratorCode *newGenerateCode(char *label_begin, char *label_end, CodeGeneratorInstruction instruction); @@ -32,8 +39,9 @@ void generateCodePushCode(CodeGeneratorCodes *codes, CodeGeneratorCode code); CodeGeneratorCodes *codeGenerator(AstTreeRoot *astTreeRoot); -bool codeGeneratorAstTreeFunction(char *label_begin,char *label_end,AstTree astTree, CodeGeneratorCodes *codes); +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); +bool codeGeneratorFlatASMExec(const char *filePath, const char *fasm); -- cgit v1.2.3