diff options
author | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-02-03 09:14:51 +0330 |
---|---|---|
committer | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-02-03 09:14:51 +0330 |
commit | 160da58b3f49b9c295551f81d41a106ff7f6546e (patch) | |
tree | 657a99e6cae7e69e2d21a38679253797bf108ce8 /src/compiler/code-generator.h | |
parent | 6b5e8fbb13552ecb78f8e348578861e9409d11f1 (diff) |
make mov and def more dynamic
Diffstat (limited to 'src/compiler/code-generator.h')
-rw-r--r-- | src/compiler/code-generator.h | 18 |
1 files changed, 10 insertions, 8 deletions
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); |