diff options
author | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-01-25 20:53:59 +0330 |
---|---|---|
committer | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-01-25 20:53:59 +0330 |
commit | b945815a225c3efdef5df03af52f921f98f9ed90 (patch) | |
tree | d70bc30bba6f0267596e9bac47be0882d7fe19b6 /src/compiler/code-generator.h | |
parent | 6a2b633d6fdc10ffb496f90912f57ec72daf25f6 (diff) |
add function call
Diffstat (limited to 'src/compiler/code-generator.h')
-rw-r--r-- | src/compiler/code-generator.h | 14 |
1 files changed, 11 insertions, 3 deletions
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); |