diff options
author | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-02-06 10:34:20 +0330 |
---|---|---|
committer | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-02-06 10:34:20 +0330 |
commit | b89bec88a56b81d3524ed082db9796ef3169b060 (patch) | |
tree | 1be62c1568328066640f1fdd6737c17607df0df4 /src/compiler/code-generator.h | |
parent | f5f8e53b9d4c7ad2bd635a0b2273cd2fa90ff8b4 (diff) |
prepairing to have better functions
fix bug
Diffstat (limited to 'src/compiler/code-generator.h')
-rw-r--r-- | src/compiler/code-generator.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/compiler/code-generator.h b/src/compiler/code-generator.h index dc09386..e4d9cac 100644 --- a/src/compiler/code-generator.h +++ b/src/compiler/code-generator.h @@ -9,6 +9,8 @@ typedef enum CodeGeneratorInstruction : uint8_t { CODE_GENERATOR_INSTRUCTION_CALL, CODE_GENERATOR_INSTRUCTION_RET, CODE_GENERATOR_INSTRUCTION_MOV, + CODE_GENERATOR_INSTRUCTION_FUNCTION_BEGIN, + CODE_GENERATOR_INSTRUCTION_FUNCTION_END, } CodeGeneratorInstruction; typedef struct CodeGeneratorCode { @@ -42,6 +44,16 @@ typedef struct CodeGeneratorMov { size_t bytes; } CodeGeneratorMov; +typedef struct CodeGeneratorFunctionBegin { + char *name_begin; + char *name_end; +} CodeGeneratorFunctionBegin; + +typedef struct CodeGeneratorFunctionEnd { + char *name_begin; + char *name_end; +} CodeGeneratorFunctionEnd; + typedef struct CodeGeneratorDefine { char *label_begin; char *label_end; @@ -62,6 +74,9 @@ void codeGeneratorDelete(CodeGeneratorCodes *code); CodeGeneratorOperand *newCodeGeneratorOperand(void *value, bool isReference); CodeGeneratorOperand makeCodeGeneratorOperand(void *value, bool isReference); +CodeGeneratorFunctionBegin *newCodeGeneratorFunctionBegin(char *name_begin,char *name_end); +CodeGeneratorFunctionEnd *newCodeGeneratorFunctionEnd(char *name_begin,char *name_end); + CodeGeneratorOperand *newCodeGeneratorOperandFromAstTree(AstTree tree); CodeGeneratorCode createGenerateCode(char *label_begin, char *label_end, |