summaryrefslogtreecommitdiff
path: root/src/compiler/code-generator.h
diff options
context:
space:
mode:
authorA404M <ahmadmahmoudiprogrammer@gmail.com>2025-02-06 10:34:20 +0330
committerA404M <ahmadmahmoudiprogrammer@gmail.com>2025-02-06 10:34:20 +0330
commitb89bec88a56b81d3524ed082db9796ef3169b060 (patch)
tree1be62c1568328066640f1fdd6737c17607df0df4 /src/compiler/code-generator.h
parentf5f8e53b9d4c7ad2bd635a0b2273cd2fa90ff8b4 (diff)
prepairing to have better functions
fix bug
Diffstat (limited to 'src/compiler/code-generator.h')
-rw-r--r--src/compiler/code-generator.h15
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,