From 160da58b3f49b9c295551f81d41a106ff7f6546e Mon Sep 17 00:00:00 2001 From: A404M Date: Mon, 3 Feb 2025 09:14:51 +0330 Subject: make mov and def more dynamic --- src/compiler/code-generator.h | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'src/compiler/code-generator.h') diff --git a/src/compiler/code-generator.h b/src/compiler/code-generator.h index 0c388b9..3399ee3 100644 --- a/src/compiler/code-generator.h +++ b/src/compiler/code-generator.h @@ -9,13 +9,9 @@ typedef enum CodeGeneratorInstruction : uint8_t { CODE_GENERATOR_INSTRUCTION_CALL, CODE_GENERATOR_INSTRUCTION_RET, CODE_GENERATOR_INSTRUCTION_DEF_VAR64, - CODE_GENERATOR_INSTRUCTION_MOV_64, + CODE_GENERATOR_INSTRUCTION_MOV, } CodeGeneratorInstruction; -typedef enum CodeGeneratorType : uint8_t { - CODE_GENERATOR_TYPE_64, -} CodeGeneratorType; - typedef struct CodeGeneratorCode { char *label_begin; char *label_end; @@ -41,11 +37,17 @@ typedef struct CodeGeneratorDoubleOperand { CodeGeneratorOperand op1; } CodeGeneratorDoubleOperand; +typedef struct CodeGeneratorMov { + CodeGeneratorOperand op0; + CodeGeneratorOperand op1; + size_t bytes; +} CodeGeneratorMov; + typedef struct CodeGeneratorDefine { char *label_begin; char *label_end; CodeGeneratorOperand operand; - CodeGeneratorType type; + size_t bytes; } CodeGeneratorDefine; typedef struct CodeGeneratorCodes { @@ -68,8 +70,8 @@ CodeGeneratorCode createGenerateCode(char *label_begin, char *label_end, void *metadata); CodeGeneratorDefine createGenerateDefine(char *label_begin, char *label_end, - CodeGeneratorOperand operand, - CodeGeneratorType type); + CodeGeneratorOperand operand, + size_t bytes); CodeGeneratorCode *newGenerateCode(char *label_begin, char *label_end, CodeGeneratorInstruction instruction); -- cgit v1.2.3