summaryrefslogtreecommitdiff
path: root/src/compiler/code-generator.h
diff options
context:
space:
mode:
authorA404M <ahmadmahmoudiprogrammer@gmail.com>2025-01-25 20:53:59 +0330
committerA404M <ahmadmahmoudiprogrammer@gmail.com>2025-01-25 20:53:59 +0330
commitb945815a225c3efdef5df03af52f921f98f9ed90 (patch)
treed70bc30bba6f0267596e9bac47be0882d7fe19b6 /src/compiler/code-generator.h
parent6a2b633d6fdc10ffb496f90912f57ec72daf25f6 (diff)
add function call
Diffstat (limited to 'src/compiler/code-generator.h')
-rw-r--r--src/compiler/code-generator.h14
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);