summaryrefslogtreecommitdiff
path: root/src/compiler/code-generator.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/compiler/code-generator.h')
-rw-r--r--src/compiler/code-generator.h18
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);